VAST SPACE ARCHIVES: Beeleth Wiki vastwiki https://vast.miraheze.org/wiki/BEELETH_Wiki MediaWiki 1.40.1 first-letter Media Special Talk User User talk VAST SPACE ARCHIVES: Beeleth Wiki VAST SPACE ARCHIVES: Beeleth Wiki talk File File talk MediaWiki MediaWiki talk Template Template talk Help Help talk Category Category talk UserWiki UserWiki talk User profile User profile talk Campaign Campaign talk TimedText TimedText talk Module Module talk Template:Div col end 10 209 415 2015-10-03T15:58:07Z beeleth>NeilN 0 Changed protection level of Template:Div col end: per request at [[WP:RFPP]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite)) wikitext text/x-wiki <includeonly></div></includeonly><noinclude> {{Documentation|Template:Div col/doc}} </noinclude> 78088d41c21d779e3722f220fcc9773dfbbc1e4f Template:Yesno-no 10 210 417 2018-02-13T20:27:17Z beeleth>WOSlinker 0 separate pp-template not needed wikitext text/x-wiki {{safesubst:<noinclude />yesno|{{{1}}}|yes={{{yes|yes}}}|no={{{no|no}}}|blank={{{blank|no}}}|¬={{{¬|no}}}|def={{{def|no}}}}}<noinclude> {{Documentation|Template:Yesno/doc}} <!--Categories go in the doc page referenced above; interwikis go in Wikidata.--> </noinclude> 1ad7b7800da1b867ead8f6ff8cef76e6201b3b56 Template:Distinguish 10 190 375 2018-03-03T23:40:51Z beeleth>Plastikspork 0 [[Wikipedia:Templates for discussion/Log/2018 February 19#Template:Distinguish2]] closed as merge ([[WP:XFDC|XFDcloser]]) wikitext text/x-wiki {{#invoke:Distinguish|distinguish}}<noinclude><!-- splitting these lines causes {{Documentation}} template to terminate green shading when Distinguish is used in /doc pages. --> {{Documentation}} <!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! --> </noinclude> f949a4cbfd6eb0ab77b832e69059a40a964b1fd8 Module:Distinguish 828 192 379 2018-04-01T10:06:10Z beeleth>Galobtter 0 fixed with text and selfref Scribunto text/plain local mHatnote = require('Module:Hatnote') local mHatlist = require('Module:Hatnote list') local mArguments --initialize lazily local mTableTools --initialize lazily local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local p = {} function p.distinguish(frame) mArguments = require('Module:Arguments') mTableTools = require('Module:TableTools') local args = mArguments.getArgs(frame) local selfref = args.selfref local text = args.text args = mTableTools.compressSparseArray(args) return p._distinguish(args, text, selfref) end function p._distinguish(args, text, selfref) checkType("_distinguish", 1, args, 'table') if #args == 0 and not text then return '' end local text = string.format( 'Not to be confused with %s.', text or mHatlist.orList(args, true) ) hnOptions = {selfref = selfref} return mHatnote._hatnote(text, hnOptions) end return p 0364d14af01fc656ad1d898c5036fbd12a7ca938 Module:Citation 828 319 627 2018-05-21T11:38:53Z vast>Pppery 0 Rm unreachable code Scribunto text/plain error('This module is retained for historical and structural reasons; consider using [[Module:Citation/CS1]].') b09b01dacd314f37060769a4fc6b8f027c247b86 Template:Infobox 10 169 331 2018-08-15T18:33:36Z beeleth>Primefac 0 Undid revision 855063393 by [[Special:Contributions/Jdlrobson|Jdlrobson]] ([[User talk:Jdlrobson|talk]]) rather problematic change mentioned [[Template_talk:Infobox#Using_template_styles_to_reduce_technical_debt_inside_mobile_skin|on talk page]], reverting until it can be sorted wikitext text/x-wiki {{#invoke:Infobox|infobox}}<includeonly>{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|[[Category:Infobox templates|{{remove first word|{{SUBPAGENAME}}}}]]}}}}|}}</includeonly><noinclude> {{documentation}} <!-- Categories go in the /doc subpage, and interwikis go in Wikidata. --> </noinclude> 817a9f5b6524eced06a57bd1d5fd7179f9369bf2 Template:Nobold 10 179 351 2018-10-23T17:15:13Z beeleth>Frietjes 0 wikitext text/x-wiki <templatestyles src="Nobold/styles.css"/><span class="nobold">{{{1}}}</span><noinclude> {{documentation}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> 9c92b5951772bb26ca0fbe9256418b65e47700dd Template:Template other 10 189 371 2018-12-16T22:06:25Z beeleth>Amorymeltzer 0 Changed protection level for "[[Template:Template other]]": [[WP:High-risk templates|Highly visible template]]: Transclusion count has increased dramatically ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:Template}} | template | other }} }} | template = {{{1|}}} | other | #default = {{{2|}}} }}<!--End switch--><noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 06fb13d264df967b5232141067eb7d2b67372d76 Template:Nobold/styles.css 10 180 353 2019-03-03T23:43:41Z beeleth>Pppery 0 Adding protection template text text/plain /* {{pp-template}} */ /* Styling for Template:Nobold */ .nobold { font-weight: normal; } 83e5f0adacf8c7984251f1fd9d11ed82ebaadf03 Template:Lua 10 226 451 2019-03-20T22:04:45Z beeleth>RMCD bot 0 Removing notice of move discussion wikitext text/x-wiki <includeonly>{{#invoke:Lua banner|main}}</includeonly><noinclude> {{Lua|Module:Lua banner}} {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> dba3962144dacd289dbc34f50fbe0a7bf6d7f2f7 Template:Clc 10 236 471 2019-04-24T04:30:59Z beeleth>JJMC89 0 actual template is in the category wikitext text/x-wiki #REDIRECT [[Template:Category link with count]] 02280e2ab57b544236e11f913e3759c5781ca9d5 Module:Parameter names example 828 225 449 2020-03-26T04:07:47Z beeleth>Andrybak 0 add popular variants of demonstration purposes parameters: nocat=yes, categories=no, and demo=yes Scribunto text/plain -- This module implements {{parameter names example}}. local p = {} local function makeParam(s) local lb = '&#123;' local rb = '&#125;' return lb:rep(3) .. s .. rb:rep(3) end local function italicize(s) return "''" .. s .. "''" end local function plain(s) return s end function p._main(args, frame) -- Find how we want to format the arguments to the template. local formatFunc if args._display == 'italics' or args._display == 'italic' then formatFunc = italicize elseif args._display == 'plain' then formatFunc = plain else formatFunc = makeParam end -- Build the table of template arguments. local targs = {} for k, v in pairs(args) do if type(k) == 'number' then targs[v] = formatFunc(v) elseif not k:find('^_') then targs[k] = v end end targs['nocat'] = 'yes'; targs['categories'] = 'no'; targs['demo'] = 'yes'; -- Find the template name. local template if args._template then template = args._template else local currentTitle = mw.title.getCurrentTitle() if currentTitle.prefixedText:find('/sandbox$') then template = currentTitle.prefixedText else template = currentTitle.basePageTitle.prefixedText end end -- Call the template with the arguments. frame = frame or mw.getCurrentFrame() local success, result = pcall( frame.expandTemplate, frame, {title = template, args = targs} ) if success then return result else return '' end end function p.main(frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:Parameter names example' }) return p._main(args, frame) end return p 576eb8298850f4e4e62105ac740df295b7b7eb9e Template:Ombox 10 234 467 2020-04-01T06:12:36Z beeleth>MusikAnimal 0 1 revision imported wikitext text/x-wiki {{#invoke:Message box|ombox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 0e54065432d540737b9e56c4e3a8e7f74d4534ea Module:Arguments 828 172 337 2020-04-01T06:12:40Z beeleth>MusikAnimal 0 1 revision imported Scribunto text/plain -- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local arguments = {} -- Generate four different tidyVal functions, so that we don't have to check the -- options every time we call it. local function tidyValDefault(key, val) if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val == '' then return nil else return val end else return val end end local function tidyValTrimOnly(key, val) if type(val) == 'string' then return val:match('^%s*(.-)%s*$') else return val end end local function tidyValRemoveBlanksOnly(key, val) if type(val) == 'string' then if val:find('%S') then return val else return nil end else return val end end local function tidyValNoChange(key, val) return val end local function matchesTitle(given, title) local tp = type( given ) return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title end local translate_mt = { __index = function(t, k) return k end } function arguments.getArgs(frame, options) checkType('getArgs', 1, frame, 'table', true) checkType('getArgs', 2, options, 'table', true) frame = frame or {} options = options or {} --[[ -- Set up argument translation. --]] options.translate = options.translate or {} if getmetatable(options.translate) == nil then setmetatable(options.translate, translate_mt) end if options.backtranslate == nil then options.backtranslate = {} for k,v in pairs(options.translate) do options.backtranslate[v] = k end end if options.backtranslate and getmetatable(options.backtranslate) == nil then setmetatable(options.backtranslate, { __index = function(t, k) if options.translate[k] ~= k then return nil else return k end end }) end --[[ -- Get the argument tables. If we were passed a valid frame object, get the -- frame arguments (fargs) and the parent frame arguments (pargs), depending -- on the options set and on the parent frame's availability. If we weren't -- passed a valid frame object, we are being called from another Lua module -- or from the debug console, so assume that we were passed a table of args -- directly, and assign it to a new variable (luaArgs). --]] local fargs, pargs, luaArgs if type(frame.args) == 'table' and type(frame.getParent) == 'function' then if options.wrappers then --[[ -- The wrappers option makes Module:Arguments look up arguments in -- either the frame argument table or the parent argument table, but -- not both. This means that users can use either the #invoke syntax -- or a wrapper template without the loss of performance associated -- with looking arguments up in both the frame and the parent frame. -- Module:Arguments will look up arguments in the parent frame -- if it finds the parent frame's title in options.wrapper; -- otherwise it will look up arguments in the frame object passed -- to getArgs. --]] local parent = frame:getParent() if not parent then fargs = frame.args else local title = parent:getTitle():gsub('/sandbox$', '') local found = false if matchesTitle(options.wrappers, title) then found = true elseif type(options.wrappers) == 'table' then for _,v in pairs(options.wrappers) do if matchesTitle(v, title) then found = true break end end end -- We test for false specifically here so that nil (the default) acts like true. if found or options.frameOnly == false then pargs = parent.args end if not found or options.parentOnly == false then fargs = frame.args end end else -- options.wrapper isn't set, so check the other options. if not options.parentOnly then fargs = frame.args end if not options.frameOnly then local parent = frame:getParent() pargs = parent and parent.args or nil end end if options.parentFirst then fargs, pargs = pargs, fargs end else luaArgs = frame end -- Set the order of precedence of the argument tables. If the variables are -- nil, nothing will be added to the table, which is how we avoid clashes -- between the frame/parent args and the Lua args. local argTables = {fargs} argTables[#argTables + 1] = pargs argTables[#argTables + 1] = luaArgs --[[ -- Generate the tidyVal function. If it has been specified by the user, we -- use that; if not, we choose one of four functions depending on the -- options chosen. This is so that we don't have to call the options table -- every time the function is called. --]] local tidyVal = options.valueFunc if tidyVal then if type(tidyVal) ~= 'function' then error( "bad value assigned to option 'valueFunc'" .. '(function expected, got ' .. type(tidyVal) .. ')', 2 ) end elseif options.trim ~= false then if options.removeBlanks ~= false then tidyVal = tidyValDefault else tidyVal = tidyValTrimOnly end else if options.removeBlanks ~= false then tidyVal = tidyValRemoveBlanksOnly else tidyVal = tidyValNoChange end end --[[ -- Set up the args, metaArgs and nilArgs tables. args will be the one -- accessed from functions, and metaArgs will hold the actual arguments. Nil -- arguments are memoized in nilArgs, and the metatable connects all of them -- together. --]] local args, metaArgs, nilArgs, metatable = {}, {}, {}, {} setmetatable(args, metatable) local function mergeArgs(tables) --[[ -- Accepts multiple tables as input and merges their keys and values -- into one table. If a value is already present it is not overwritten; -- tables listed earlier have precedence. We are also memoizing nil -- values, which can be overwritten if they are 's' (soft). --]] for _, t in ipairs(tables) do for key, val in pairs(t) do if metaArgs[key] == nil and nilArgs[key] ~= 'h' then local tidiedVal = tidyVal(key, val) if tidiedVal == nil then nilArgs[key] = 's' else metaArgs[key] = tidiedVal end end end end end --[[ -- Define metatable behaviour. Arguments are memoized in the metaArgs table, -- and are only fetched from the argument tables once. Fetching arguments -- from the argument tables is the most resource-intensive step in this -- module, so we try and avoid it where possible. For this reason, nil -- arguments are also memoized, in the nilArgs table. Also, we keep a record -- in the metatable of when pairs and ipairs have been called, so we do not -- run pairs and ipairs on the argument tables more than once. We also do -- not run ipairs on fargs and pargs if pairs has already been run, as all -- the arguments will already have been copied over. --]] metatable.__index = function (t, key) --[[ -- Fetches an argument when the args table is indexed. First we check -- to see if the value is memoized, and if not we try and fetch it from -- the argument tables. When we check memoization, we need to check -- metaArgs before nilArgs, as both can be non-nil at the same time. -- If the argument is not present in metaArgs, we also check whether -- pairs has been run yet. If pairs has already been run, we return nil. -- This is because all the arguments will have already been copied into -- metaArgs by the mergeArgs function, meaning that any other arguments -- must be nil. --]] if type(key) == 'string' then key = options.translate[key] end local val = metaArgs[key] if val ~= nil then return val elseif metatable.donePairs or nilArgs[key] then return nil end for _, argTable in ipairs(argTables) do local argTableVal = tidyVal(key, argTable[key]) if argTableVal ~= nil then metaArgs[key] = argTableVal return argTableVal end end nilArgs[key] = 'h' return nil end metatable.__newindex = function (t, key, val) -- This function is called when a module tries to add a new value to the -- args table, or tries to change an existing value. if type(key) == 'string' then key = options.translate[key] end if options.readOnly then error( 'could not write to argument table key "' .. tostring(key) .. '"; the table is read-only', 2 ) elseif options.noOverwrite and args[key] ~= nil then error( 'could not write to argument table key "' .. tostring(key) .. '"; overwriting existing arguments is not permitted', 2 ) elseif val == nil then --[[ -- If the argument is to be overwritten with nil, we need to erase -- the value in metaArgs, so that __index, __pairs and __ipairs do -- not use a previous existing value, if present; and we also need -- to memoize the nil in nilArgs, so that the value isn't looked -- up in the argument tables if it is accessed again. --]] metaArgs[key] = nil nilArgs[key] = 'h' else metaArgs[key] = val end end local function translatenext(invariant) local k, v = next(invariant.t, invariant.k) invariant.k = k if k == nil then return nil elseif type(k) ~= 'string' or not options.backtranslate then return k, v else local backtranslate = options.backtranslate[k] if backtranslate == nil then -- Skip this one. This is a tail call, so this won't cause stack overflow return translatenext(invariant) else return backtranslate, v end end end metatable.__pairs = function () -- Called when pairs is run on the args table. if not metatable.donePairs then mergeArgs(argTables) metatable.donePairs = true end return translatenext, { t = metaArgs } end local function inext(t, i) -- This uses our __index metamethod local v = t[i + 1] if v ~= nil then return i + 1, v end end metatable.__ipairs = function (t) -- Called when ipairs is run on the args table. return inext, t, 0 end return args end return arguments 3134ecce8429b810d445e29eae115e2ae4c36c53 Module:Yesno 828 171 335 2020-04-01T06:27:55Z beeleth>MusikAnimal 0 Undid revision 948472533 by [[Special:Contributions/w>Vogone|w>Vogone]] ([[User talk:w>Vogone|talk]]) Scribunto text/plain -- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y' or val == 'true' or val == 't' or val == 'on' or tonumber(val) == 1 then return true elseif val == false or val == 'no' or val == 'n' or val == 'false' or val == 'f' or val == 'off' or tonumber(val) == 0 then return false else return default end end f767643e7d12126d020d88d662a3dd057817b9dc Module:File link 828 195 385 2020-04-01T06:31:54Z beeleth>MusikAnimal 0 Undid revision 948472508 by [[Special:Contributions/w>IPad365|w>IPad365]] ([[User talk:w>IPad365|talk]]) Scribunto text/plain -- This module provides a library for formatting file wikilinks. local yesno = require('Module:Yesno') local checkType = require('libraryUtil').checkType local p = {} function p._main(args) checkType('_main', 1, args, 'table') -- This is basically libraryUtil.checkTypeForNamedArg, but we are rolling our -- own function to get the right error level. local function checkArg(key, val, level) if type(val) ~= 'string' then error(string.format( "type error in '%s' parameter of '_main' (expected string, got %s)", key, type(val) ), level) end end local ret = {} -- Adds a positional parameter to the buffer. local function addPositional(key) local val = args[key] if not val then return nil end checkArg(key, val, 4) ret[#ret + 1] = val end -- Adds a named parameter to the buffer. We assume that the parameter name -- is the same as the argument key. local function addNamed(key) local val = args[key] if not val then return nil end checkArg(key, val, 4) ret[#ret + 1] = key .. '=' .. val end -- Filename checkArg('file', args.file, 3) ret[#ret + 1] = 'File:' .. args.file -- Format if args.format then checkArg('format', args.format) if args.formatfile then checkArg('formatfile', args.formatfile) ret[#ret + 1] = args.format .. '=' .. args.formatfile else ret[#ret + 1] = args.format end end -- Border if yesno(args.border) then ret[#ret + 1] = 'border' end addPositional('location') addPositional('alignment') addPositional('size') addNamed('upright') addNamed('link') addNamed('alt') addNamed('page') addNamed('class') addNamed('lang') addNamed('start') addNamed('end') addNamed('thumbtime') addPositional('caption') return string.format('[[%s]]', table.concat(ret, '|')) end function p.main(frame) local origArgs = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:File link' }) if not origArgs.file then error("'file' parameter missing from [[Template:File link]]", 0) end -- Copy the arguments that were passed to a new table to avoid looking up -- every possible parameter in the frame object. local args = {} for k, v in pairs(origArgs) do -- Make _BLANK a special argument to add a blank parameter. For use in -- conditional templates etc. it is useful for blank arguments to be -- ignored, but we still need a way to specify them so that we can do -- things like [[File:Example.png|link=]]. if v == '_BLANK' then v = '' end args[k] = v end return p._main(args) end return p 66925f088d11530f2482f04181a3baaaa0ad3d0c Template:Sandbox other 10 215 429 2020-04-03T00:08:09Z beeleth>Evad37 0 Also match subpage names beginning with "sandbox", per [[Template_talk:Sandbox_other#Template-protected_edit_request_on_28_March_2020|edit request]] wikitext text/x-wiki {{#if:{{#ifeq:{{#invoke:String|sublength|s={{SUBPAGENAME}}|i=0|len=7}}|sandbox|1}}{{#ifeq:{{SUBPAGENAME}}|doc|1}}{{#invoke:String|match|{{PAGENAME}}|/sandbox/styles.css$|plain=false|nomatch=}}|{{{1|}}}|{{{2|}}}}}<!-- --><noinclude>{{documentation}}</noinclude> 91e4ae891d6b791615152c1fbc971414961ba872 Template:Tlf 10 218 435 2020-04-13T14:42:57Z beeleth>Primefac 0 Primefac moved page [[Template:Tlf]] to [[Template:Template link with link off]]: full name to indicate what it does wikitext text/x-wiki #REDIRECT [[Template:Template link with link off]] {{Redirect category shell| {{R from move}} }} 52759e1d3f7c9aa4a03d0b7d4f84f4c6adf53edf Template:Sidebar 10 191 377 2020-06-04T02:43:13Z beeleth>Primefac 0 TFD closed as keep ([[WP:XFDC|XFDcloser]]) wikitext text/x-wiki {{#invoke:Sidebar|sidebar}}<noinclude> {{documentation}}</noinclude> ab2498000a99daf324f656b0badd187b4a3e2b42 Template:Uses TemplateStyles 10 239 477 2020-06-21T18:00:10Z beeleth>MusikBot II 0 Protected "[[Template:Uses TemplateStyles]]": [[Wikipedia:High-risk templates|High-risk template or module]] ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) wikitext text/x-wiki <includeonly>{{#invoke:Uses TemplateStyles|main}}</includeonly><noinclude> {{Uses TemplateStyles|Template:Uses TemplateStyles/example.css|nocat=true}} {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 7e26d8f257e302bd8a3dcbe53f52741ae0884f74 Module:String 828 182 357 2020-08-02T15:49:42Z beeleth>RexxS 0 separate annotations for str.match from those for str._match Scribunto text/plain --[[ This module is intended to provide access to basic string functions. Most of the functions provided here can be invoked with named parameters, unnamed parameters, or a mixture. If named parameters are used, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. Depending on the intended use, it may be advantageous to either preserve or remove such whitespace. Global options ignore_errors: If set to 'true' or 1, any error condition will result in an empty string being returned rather than an error message. error_category: If an error occurs, specifies the name of a category to include with the error message. The default category is [Category:Errors reported by Module String]. no_category: If set to 'true' or 1, no category will be added if an error is generated. Unit tests for this module are available at Module:String/tests. ]] local str = {} --[[ len This function returns the length of the target string. Usage: {{#invoke:String|len|target_string|}} OR {{#invoke:String|len|s=target_string}} Parameters s: The string whose length to report If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. ]] function str.len( frame ) local new_args = str._getParameters( frame.args, {'s'} ) local s = new_args['s'] or '' return mw.ustring.len( s ) end --[[ sub This function returns a substring of the target string at specified indices. Usage: {{#invoke:String|sub|target_string|start_index|end_index}} OR {{#invoke:String|sub|s=target_string|i=start_index|j=end_index}} Parameters s: The string to return a subset of i: The fist index of the substring to return, defaults to 1. j: The last index of the string to return, defaults to the last character. The first character of the string is assigned an index of 1. If either i or j is a negative value, it is interpreted the same as selecting a character by counting from the end of the string. Hence, a value of -1 is the same as selecting the last character of the string. If the requested indices are out of range for the given string, an error is reported. ]] function str.sub( frame ) local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } ) local s = new_args['s'] or '' local i = tonumber( new_args['i'] ) or 1 local j = tonumber( new_args['j'] ) or -1 local len = mw.ustring.len( s ) -- Convert negatives for range checking if i < 0 then i = len + i + 1 end if j < 0 then j = len + j + 1 end if i > len or j > len or i < 1 or j < 1 then return str._error( 'String subset index out of range' ) end if j < i then return str._error( 'String subset indices out of order' ) end return mw.ustring.sub( s, i, j ) end --[[ This function implements that features of {{str sub old}} and is kept in order to maintain these older templates. ]] function str.sublength( frame ) local i = tonumber( frame.args.i ) or 0 local len = tonumber( frame.args.len ) return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) ) end --[[ _match This function returns a substring from the source string that matches a specified pattern. It is exported for use in other modules Usage: strmatch = require("Module:String")._match sresult = strmatch( s, pattern, start, match, plain, nomatch ) Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This sub-routine is exported for use in other modules function str._match( s, pattern, start, match_index, plain_flag, nomatch ) if s == '' then return str._error( 'Target string is empty' ) end if pattern == '' then return str._error( 'Pattern string is empty' ) end start = tonumber(start) or 1 if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then return str._error( 'Requested start is out of range' ) end if match_index == 0 then return str._error( 'Match index is out of range' ) end if plain_flag then pattern = str._escapePattern( pattern ) end local result if match_index == 1 then -- Find first match is simple case result = mw.ustring.match( s, pattern, start ) else if start > 1 then s = mw.ustring.sub( s, start ) end local iterator = mw.ustring.gmatch(s, pattern) if match_index > 0 then -- Forward search for w in iterator do match_index = match_index - 1 if match_index == 0 then result = w break end end else -- Reverse search local result_table = {} local count = 1 for w in iterator do result_table[count] = w count = count + 1 end result = result_table[ count + match_index ] end end if result == nil then if nomatch == nil then return str._error( 'Match not found' ) else return nomatch end else return result end end --[[ match This function returns a substring from the source string that matches a specified pattern. Usage: {{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}} OR {{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index |match=match_number|plain=plain_flag|nomatch=nomatch_output}} Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from each string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. If the match_number or start_index are out of range for the string being queried, then this function generates an error. An error is also generated if no match is found. If one adds the parameter ignore_errors=true, then the error will be suppressed and an empty string will be returned on any failure. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This is the entry point for #invoke:String|match function str.match( frame ) local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} ) local s = new_args['s'] or '' local start = tonumber( new_args['start'] ) or 1 local plain_flag = str._getBoolean( new_args['plain'] or false ) local pattern = new_args['pattern'] or '' local match_index = math.floor( tonumber(new_args['match']) or 1 ) local nomatch = new_args['nomatch'] return str._match( s, pattern, start, match_index, plain_flag, nomatch ) end --[[ pos This function returns a single character from the target string at position pos. Usage: {{#invoke:String|pos|target_string|index_value}} OR {{#invoke:String|pos|target=target_string|pos=index_value}} Parameters target: The string to search pos: The index for the character to return If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. The first character has an index value of 1. If one requests a negative value, this function will select a character by counting backwards from the end of the string. In other words pos = -1 is the same as asking for the last character. A requested value of zero, or a value greater than the length of the string returns an error. ]] function str.pos( frame ) local new_args = str._getParameters( frame.args, {'target', 'pos'} ) local target_str = new_args['target'] or '' local pos = tonumber( new_args['pos'] ) or 0 if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then return str._error( 'String index out of range' ) end return mw.ustring.sub( target_str, pos, pos ) end --[[ str_find This function duplicates the behavior of {{str_find}}, including all of its quirks. This is provided in order to support existing templates, but is NOT RECOMMENDED for new code and templates. New code is recommended to use the "find" function instead. Returns the first index in "source" that is a match to "target". Indexing is 1-based, and the function returns -1 if the "target" string is not present in "source". Important Note: If the "target" string is empty / missing, this function returns a value of "1", which is generally unexpected behavior, and must be accounted for separatetly. ]] function str.str_find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target'} ) local source_str = new_args['source'] or '' local target_str = new_args['target'] or '' if target_str == '' then return 1 end local start = mw.ustring.find( source_str, target_str, 1, true ) if start == nil then start = -1 end return start end --[[ find This function allows one to search for a target string or pattern within another string. Usage: {{#invoke:String|find|source_str|target_string|start_index|plain_flag}} OR {{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}} Parameters source: The string to search target: The string or pattern to find within source start: The index within the source string to start the search, defaults to 1 plain: Boolean flag indicating that target should be understood as plain text and not as a Lua style regular expression, defaults to true If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. This function returns the first index >= "start" where "target" can be found within "source". Indices are 1-based. If "target" is not found, then this function returns 0. If either "source" or "target" are missing / empty, this function also returns 0. This function should be safe for UTF-8 strings. ]] function str.find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['target'] or '' local start_pos = tonumber(new_args['start']) or 1 local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return 0 end plain = str._getBoolean( plain ) local start = mw.ustring.find( source_str, pattern, start_pos, plain ) if start == nil then start = 0 end return start end --[[ replace This function allows one to replace a target string or pattern within another string. Usage: {{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}} OR {{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string| count=replacement_count|plain=plain_flag}} Parameters source: The string to search pattern: The string or pattern to find within source replace: The replacement text count: The number of occurences to replace, defaults to all. plain: Boolean flag indicating that pattern should be understood as plain text and not as a Lua style regular expression, defaults to true ]] function str.replace( frame ) local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['pattern'] or '' local replace = new_args['replace'] or '' local count = tonumber( new_args['count'] ) local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return source_str end plain = str._getBoolean( plain ) if plain then pattern = str._escapePattern( pattern ) replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences. end local result if count ~= nil then result = mw.ustring.gsub( source_str, pattern, replace, count ) else result = mw.ustring.gsub( source_str, pattern, replace ) end return result end --[[ simple function to pipe string.rep to templates. ]] function str.rep( frame ) local repetitions = tonumber( frame.args[2] ) if not repetitions then return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' ) end return string.rep( frame.args[1] or '', repetitions ) end --[[ escapePattern This function escapes special characters from a Lua string pattern. See [1] for details on how patterns work. [1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns Usage: {{#invoke:String|escapePattern|pattern_string}} Parameters pattern_string: The pattern string to escape. ]] function str.escapePattern( frame ) local pattern_str = frame.args[1] if not pattern_str then return str._error( 'No pattern string specified' ) end local result = str._escapePattern( pattern_str ) return result end --[[ count This function counts the number of occurrences of one string in another. ]] function str.count(frame) local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'}) local source = args.source or '' local pattern = args.pattern or '' local plain = str._getBoolean(args.plain or true) if plain then pattern = str._escapePattern(pattern) end local _, count = mw.ustring.gsub(source, pattern, '') return count end --[[ endswith This function determines whether a string ends with another string. ]] function str.endswith(frame) local args = str._getParameters(frame.args, {'source', 'pattern'}) local source = args.source or '' local pattern = args.pattern or '' if pattern == '' then -- All strings end with the empty string. return "yes" end if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then return "yes" else return "" end end --[[ join Join all non empty arguments together; the first argument is the separator. Usage: {{#invoke:String|join|sep|one|two|three}} ]] function str.join(frame) local args = {} local sep for _, v in ipairs( frame.args ) do if sep then if v ~= '' then table.insert(args, v) end else sep = v end end return table.concat( args, sep or '' ) end --[[ Helper function that populates the argument list given that user may need to use a mix of named and unnamed parameters. This is relevant because named parameters are not identical to unnamed parameters due to string trimming, and when dealing with strings we sometimes want to either preserve or remove that whitespace depending on the application. ]] function str._getParameters( frame_args, arg_list ) local new_args = {} local index = 1 local value for _, arg in ipairs( arg_list ) do value = frame_args[arg] if value == nil then value = frame_args[index] index = index + 1 end new_args[arg] = value end return new_args end --[[ Helper function to handle error messages. ]] function str._error( error_str ) local frame = mw.getCurrentFrame() local error_category = frame.args.error_category or 'Errors reported by Module String' local ignore_errors = frame.args.ignore_errors or false local no_category = frame.args.no_category or false if str._getBoolean(ignore_errors) then return '' end local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>' if error_category ~= '' and not str._getBoolean( no_category ) then error_str = '[[Category:' .. error_category .. ']]' .. error_str end return error_str end --[[ Helper Function to interpret boolean strings ]] function str._getBoolean( boolean_str ) local boolean_value if type( boolean_str ) == 'string' then boolean_str = boolean_str:lower() if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0' or boolean_str == '' then boolean_value = false else boolean_value = true end elseif type( boolean_str ) == 'boolean' then boolean_value = boolean_str else error( 'No boolean value found' ) end return boolean_value end --[[ Helper function that escapes all pattern characters so that they will be treated as plain text. ]] function str._escapePattern( pattern_str ) return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ) end return str 6df794dd52434e0f6a372c9918f5a9dedd15f579 Template:Yesno 10 177 347 2020-08-28T03:15:17Z beeleth>Xaosflux 0 add additional paramerters, "t", "f" - requested on talk - worked in sandbox /testcases wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#switch: {{<includeonly>safesubst:</includeonly>lc: {{{1|¬}}} }} |no |n |f |false |off |0 = {{{no|<!-- null -->}}} | = {{{blank|{{{no|<!-- null -->}}}}}} |¬ = {{{¬|}}} |yes |y |t |true |on |1 = {{{yes|yes}}} |#default = {{{def|{{{yes|yes}}}}}} }}<noinclude> {{Documentation}} </noinclude> 629c2937bc5cf7cfe13cd2a598582af832782399 Module:TNT 828 235 469 2020-08-30T07:28:25Z beeleth>Johnuniq 0 Changed protection level for "[[Module:TNT]]": [[WP:High-risk templates|High-risk Lua module]]: per request at [[WP:RFPP]] to match [[Module:Excerpt]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) Scribunto text/plain -- -- INTRO: (!!! DO NOT RENAME THIS PAGE !!!) -- This module allows any template or module to be copy/pasted between -- wikis without any translation changes. All translation text is stored -- in the global Data:*.tab pages on Commons, and used everywhere. -- -- SEE: https://www.mediawiki.org/wiki/Multilingual_Templates_and_Modules -- -- ATTENTION: -- Please do NOT rename this module - it has to be identical on all wikis. -- This code is maintained at https://www.mediawiki.org/wiki/Module:TNT -- Please do not modify it anywhere else, as it may get copied and override your changes. -- Suggestions can be made at https://www.mediawiki.org/wiki/Module_talk:TNT -- -- DESCRIPTION: -- The "msg" function uses a Commons dataset to translate a message -- with a given key (e.g. source-table), plus optional arguments -- to the wiki markup in the current content language. -- Use lang=xx to set language. Example: -- -- {{#invoke:TNT | msg -- | I18n/Template:Graphs.tab <!-- https://commons.wikimedia.org/wiki/Data:I18n/Template:Graphs.tab --> -- | source-table <!-- uses a translation message with id = "source-table" --> -- | param1 }} <!-- optional parameter --> -- -- -- The "doc" function will generate the <templatedata> parameter documentation for templates. -- This way all template parameters can be stored and localized in a single Commons dataset. -- NOTE: "doc" assumes that all documentation is located in Data:Templatedata/* on Commons. -- -- {{#invoke:TNT | doc | Graph:Lines }} -- uses https://commons.wikimedia.org/wiki/Data:Templatedata/Graph:Lines.tab -- if the current page is Template:Graph:Lines/doc -- local p = {} local i18nDataset = 'I18n/Module:TNT.tab' -- Forward declaration of the local functions local sanitizeDataset, loadData, link, formatMessage function p.msg(frame) local dataset, id local params = {} local lang = nil for k, v in pairs(frame.args) do if k == 1 then dataset = mw.text.trim(v) elseif k == 2 then id = mw.text.trim(v) elseif type(k) == 'number' then table.insert(params, mw.text.trim(v)) elseif k == 'lang' and v ~= '_' then lang = mw.text.trim(v) end end return formatMessage(dataset, id, params, lang) end -- Identical to p.msg() above, but used from other lua modules -- Parameters: name of dataset, message key, optional arguments -- Example with 2 params: format('I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset') function p.format(dataset, key, ...) local checkType = require('libraryUtil').checkType checkType('format', 1, dataset, 'string') checkType('format', 2, key, 'string') return formatMessage(dataset, key, {...}) end -- Identical to p.msg() above, but used from other lua modules with the language param -- Parameters: language code, name of dataset, message key, optional arguments -- Example with 2 params: formatInLanguage('es', I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset') function p.formatInLanguage(lang, dataset, key, ...) local checkType = require('libraryUtil').checkType checkType('formatInLanguage', 1, lang, 'string') checkType('formatInLanguage', 2, dataset, 'string') checkType('formatInLanguage', 3, key, 'string') return formatMessage(dataset, key, {...}, lang) end -- Obsolete function that adds a 'c:' prefix to the first param. -- "Sandbox/Sample.tab" -> 'c:Data:Sandbox/Sample.tab' function p.link(frame) return link(frame.args[1]) end function p.doc(frame) local dataset = 'Templatedata/' .. sanitizeDataset(frame.args[1]) return frame:extensionTag('templatedata', p.getTemplateData(dataset)) .. formatMessage(i18nDataset, 'edit_doc', {link(dataset)}) end function p.getTemplateData(dataset) -- TODO: add '_' parameter once lua starts reindexing properly for "all" languages local data = loadData(dataset) local names = {} for _, field in pairs(data.schema.fields) do table.insert(names, field.name) end local params = {} local paramOrder = {} for _, row in pairs(data.data) do local newVal = {} local name = nil for pos, val in pairs(row) do local columnName = names[pos] if columnName == 'name' then name = val else newVal[columnName] = val end end if name then params[name] = newVal table.insert(paramOrder, name) end end -- Work around json encoding treating {"1":{...}} as an [{...}] params['zzz123']='' local json = mw.text.jsonEncode({ params=params, paramOrder=paramOrder, description=data.description }) json = string.gsub(json,'"zzz123":"",?', "") return json end -- Local functions sanitizeDataset = function(dataset) if not dataset then return nil end dataset = mw.text.trim(dataset) if dataset == '' then return nil elseif string.sub(dataset,-4) ~= '.tab' then return dataset .. '.tab' else return dataset end end loadData = function(dataset, lang) dataset = sanitizeDataset(dataset) if not dataset then error(formatMessage(i18nDataset, 'error_no_dataset', {})) end -- Give helpful error to thirdparties who try and copy this module. if not mw.ext or not mw.ext.data or not mw.ext.data.get then error('Missing JsonConfig extension; Cannot load https://commons.wikimedia.org/wiki/Data:' .. dataset) end local data = mw.ext.data.get(dataset, lang) if data == false then if dataset == i18nDataset then -- Prevent cyclical calls error('Missing Commons dataset ' .. i18nDataset) else error(formatMessage(i18nDataset, 'error_bad_dataset', {link(dataset)})) end end return data end -- Given a dataset name, convert it to a title with the 'commons:data:' prefix link = function(dataset) return 'c:Data:' .. mw.text.trim(dataset or '') end formatMessage = function(dataset, key, params, lang) for _, row in pairs(loadData(dataset, lang).data) do local id, msg = unpack(row) if id == key then local result = mw.message.newRawMessage(msg, unpack(params or {})) return result:plain() end end if dataset == i18nDataset then -- Prevent cyclical calls error('Invalid message key "' .. key .. '"') else error(formatMessage(i18nDataset, 'error_bad_msgkey', {key, link(dataset)})) end end return p 9d0d10e54abd232c806dcabccaf03e52858634a1 Module:Effective protection level 828 194 383 2020-09-29T03:38:47Z beeleth>Jackmcbarn 0 bring in changes from sandbox Scribunto text/plain local p = {} -- Returns the permission required to perform a given action on a given title. -- If no title is specified, the title of the page being displayed is used. function p._main(action, pagename) local title if type(pagename) == 'table' and pagename.prefixedText then title = pagename elseif pagename then title = mw.title.new(pagename) else title = mw.title.getCurrentTitle() end pagename = title.prefixedText if action == 'autoreview' then local level = mw.ext.FlaggedRevs.getStabilitySettings(title) level = level and level.autoreview if level == 'review' then return 'reviewer' elseif level ~= '' then return level else return nil -- not '*'. a page not being PC-protected is distinct from it being PC-protected with anyone able to review. also not '', as that would mean PC-protected but nobody can review end elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' and action ~= 'undelete' then error( 'First parameter must be one of edit, move, create, upload, undelete, autoreview', 2 ) end if title.namespace == 8 then -- MediaWiki namespace if title.text:sub(-3) == '.js' or title.text:sub(-4) == '.css' or title.contentModel == 'javascript' or title.contentModel == 'css' then -- site JS or CSS page return 'interfaceadmin' else -- any non-JS/CSS MediaWiki page return 'sysop' end elseif title.namespace == 2 and title.isSubpage then if title.contentModel == 'javascript' or title.contentModel == 'css' then -- user JS or CSS page return 'interfaceadmin' elseif title.contentModel == 'json' then -- user JSON page return 'sysop' end end if action == 'undelete' then return 'sysop' end local level = title.protectionLevels[action] and title.protectionLevels[action][1] if level == 'sysop' or level == 'editprotected' then return 'sysop' elseif title.cascadingProtection.restrictions[action] and title.cascadingProtection.restrictions[action][1] then -- used by a cascading-protected page return 'sysop' elseif level == 'templateeditor' then return 'templateeditor' elseif action == 'move' then local blacklistentry = mw.ext.TitleBlacklist.test('edit', pagename) -- Testing action edit is correct, since this is for the source page. The target page name gets tested with action move. if blacklistentry and not blacklistentry.params.autoconfirmed then return 'templateeditor' elseif title.namespace == 6 then return 'filemover' elseif level == 'extendedconfirmed' then return 'extendedconfirmed' else return 'autoconfirmed' end end local blacklistentry = mw.ext.TitleBlacklist.test(action, pagename) if blacklistentry then if not blacklistentry.params.autoconfirmed then return 'templateeditor' elseif level == 'extendedconfirmed' then return 'extendedconfirmed' else return 'autoconfirmed' end elseif level == 'editsemiprotected' then -- create-semiprotected pages return this for some reason return 'autoconfirmed' elseif level then return level elseif action == 'upload' then return 'autoconfirmed' elseif action == 'create' and title.namespace % 2 == 0 and title.namespace ~= 118 then -- You need to be registered, but not autoconfirmed, to create non-talk pages other than drafts return 'user' else return '*' end end setmetatable(p, { __index = function(t, k) return function(frame) return t._main(k, frame.args[1]) end end }) return p 70256a489edf6be9808031b14a7e3ef3e025da97 Module:Documentation/styles.css 828 214 427 2020-11-19T20:21:58Z beeleth>Izno 0 Changed protection level for "[[Module:Documentation/styles.css]]": actually match module ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) text text/plain /* {{pp|small=yes}} */ .documentation, .documentation-metadata { border: 1px solid #a2a9b1; background-color: #ecfcf4; clear: both; } .documentation { margin: 1em 0 0 0; padding: 1em; } .documentation-metadata { margin: 0.2em 0; /* same margin left-right as .documentation */ font-style: italic; padding: 0.4em 1em; /* same padding left-right as .documentation */ } .documentation-startbox { padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bottom: 1ex; } .documentation-heading { font-weight: bold; font-size: 125%; } .documentation-clear { /* Don't want things to stick out where they shouldn't. */ clear: both; } .documentation-toolbar { font-style: normal; font-size: 85%; } ce0e629c92e3d825ab9fd927fe6cc37d9117b6cb Template:Tlx 10 186 365 2020-11-20T18:53:35Z beeleth>Primefac 0 Primefac moved page [[Template:Tlx]] to [[Template:Template link expanded]] over redirect: expand name, make it more obvious wikitext text/x-wiki #REDIRECT [[Template:Template link expanded]] {{Redirect category shell| {{R from move}} }} 1fec988ceb46cb324af228aac45d7cd25fcc9008 Template:Template link expanded 10 187 367 2020-11-21T12:04:41Z beeleth>Primefac 0 update wikitext text/x-wiki {{#Invoke:Template link general|main|code=on}}<noinclude> {{Documentation|1=Template:Tlg/doc |content = {{tlg/doc|tlx}} }} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 6c99696fee02f1da368ed20d2504e19bc15b1c13 Template:Template link with link off 10 217 433 2020-11-21T12:06:17Z beeleth>Primefac 0 update wikitext text/x-wiki <includeonly>{{#Invoke:Template link general|main|nowrap=yes|nolink=yes}}</includeonly><noinclude> {{Documentation|1=Template:Tlg/doc |content = {{tlg/doc|tlf}} }} <!-- Add categories to the /doc subpage, not here! --> </noinclude> b099fea5d1f36b0b4b9cb253ad3a9f4e095f6851 Template:Div col/styles.css 10 208 413 2021-01-05T04:54:19Z beeleth>Izno 0 remove the note as not generally necessary text text/plain /* {{pp|small=yes}} */ .div-col { margin-top: 0.3em; column-width: 30em; } .div-col-small { font-size: 90%; } .div-col-rules { column-rule: 1px solid #aaa; } /* Reset top margin for lists in div col */ .div-col dl, .div-col ol, .div-col ul { margin-top: 0; } /* Avoid elements breaking between columns See also Template:No col break */ .div-col li, .div-col dd { page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */ break-inside: avoid-column; } c6c2dc0cb2bab7a5f7b4eb938eebc5c67df087bc Template:Tl 10 173 339 2021-02-12T22:03:00Z beeleth>Anthony Appleyard 0 Anthony Appleyard moved page [[Template:Tl]] to [[Template:Template link]]: [[Special:Permalink/1006428669|Requested]] by Buidhe at [[WP:RM/TR]]: RM closed as move wikitext text/x-wiki #REDIRECT [[Template:Template link]] {{Redirect category shell| {{R from move}} }} d6593bb3b4a866249f55d0f34b047a71fe1f1529 Template:Div col 10 207 411 2021-02-14T23:20:57Z beeleth>Matt Fitzpatrick 0 whitelist parameter class wikitext text/x-wiki <includeonly><templatestyles src="Div col/styles.css"/><!-- --><div class="div-col {{#ifeq:{{{small|}}}|yes|div-col-small}} {{#ifeq:{{{rules|}}}|yes|div-col-rules}} {{{class|}}}" <!-- -->{{#if:{{{colwidth|}}}{{{gap|}}}{{{style|}}}|<!-- -->style="{{#if:{{{colwidth|}}}|column-width: {{{colwidth}}};}}{{#if:{{{gap|}}}|column-gap: {{{gap}}};}}{{#if:{{{style|}}}|{{{style}}}}}"<!-- -->}}><!-- -->{{#if:{{{content|}}}|{{{content}}}</div>}}<!-- Inventory how many pages use small=yes -->{{#ifeq:{{{small|}}}|yes|[[Category:Pages using div col with small parameter]]}}<!-- --></includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using div col with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Div col]] with unknown parameter "_VALUE_"; use colwidth= to specify column size |ignoreblank=y | class | colwidth | content | gap | rules | small | style }}<noinclude> {{Documentation}} </noinclude> 6e84133dd867d6c701e7b161878cf66665bb7eb7 Template:Template link 10 174 341 2021-03-25T19:03:22Z beeleth>Izno 0 [[Wikipedia:Templates for discussion/Log/2021 March 18#Template:Tlu]] closed as keep ([[WP:XFDC#4.0.11|XFDcloser]]) wikitext text/x-wiki &#123;&#123;[[Template:{{{1}}}|{{{1}}}]]&#125;&#125;<noinclude>{{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> eabbec62efe3044a98ebb3ce9e7d4d43c222351d Template:Category link with count 10 228 455 2021-06-11T18:13:44Z beeleth>GKFX 0 Support wider range of (valid) input format wikitext text/x-wiki [[:Category:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}|<!-- -->{{#if:{{{name|}}}|{{{name}}}|Category:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}}}<!-- -->]]&nbsp;({{PAGESINCATEGORY:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}|{{{2|all}}}}})<noinclude> {{Documentation}} </noinclude> f93f1540b8c157703bd6d24ae35c35bef745981d Module:Hatnote/styles.css 828 197 391 2021-07-12T19:22:27Z beeleth>Izno 0 per my talk page text text/plain /* {{pp|small=y}} */ .hatnote { font-style: italic; } /* Limit structure CSS to divs because of [[Module:Hatnote inline]] */ div.hatnote { /* @noflip */ padding-left: 1.6em; margin-bottom: 0.5em; } .hatnote i { font-style: normal; } /* The templatestyles element inserts a link element before hatnotes. * TODO: Remove link if/when WMF resolves T200206 */ .hatnote + link + .hatnote { margin-top: -0.5em; } 44680ffd6e888866df2cdfa0341af9c7b97da94c Module:Sidebar/configuration 828 205 407 2021-08-02T20:36:03Z beeleth>Izno 0 wraplinks work like it used to Scribunto text/plain return { i18n = { child_yes = 'yes', float_none = 'none', float_left = 'left', wrap_true = 'true', navbar_none = 'none', navbar_off = 'off', default_list_title = 'List', title_not_to_add_navbar = 'Template:Sidebar', collapse_title_not_to_add_navbar = 'Template:Sidebar with collapsible lists', templatestyles = 'Module:Sidebar/styles.css', category = { child = '[[Category:Pages using sidebar with the child parameter]]', conversion = '[[Category:Sidebars with styles needing conversion]]' }, pattern = { collapse_sandbox = '/sandbox$', sandbox = '/sandbox$', subgroup = 'sidebar%-subgroup', style_conversion = 'style$', uncategorized_conversion_titles = { '/[Ss]andbox', '/[Tt]estcases', '/[Dd]oc$' } }, class = { sidebar = 'sidebar', subgroup = 'sidebar-subgroup', collapse = 'sidebar-collapse', float_none = 'sidebar-none', float_left = 'sidebar-left', wraplinks = 'nowraplinks', outer_title = 'sidebar-outer-title', top_image = 'sidebar-top-image', top_caption = 'sidebar-top-caption', pretitle = 'sidebar-pretitle', pretitle_with_top_image = 'sidebar-pretitle-with-top-image', title = 'sidebar-title', title_with_pretitle = 'sidebar-title-with-pretitle', image = 'sidebar-image', caption = 'sidebar-caption', above = 'sidebar-above', heading = 'sidebar-heading', content = 'sidebar-content', content_with_subgroup = 'sidebar-content-with-subgroup', below = 'sidebar-below', navbar = 'sidebar-navbar', list = 'sidebar-list', list_title = 'sidebar-list-title', list_title_centered = 'sidebar-list-title-c', list_content = 'sidebar-list-content' } } } 069f50eb6a0f1833c7d37d07016b05305b5ed00c Template:Album 10 3 4 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki <includeonly><infobox type="Album"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <data source="artist"><label>Artist</label></data> <data source="released"><label>Released</label></data> <data source="recorded"><label>Recorded</label></data> <data source="length"><label>Length</label></data> <data source="label"><label>Label</label></data> <data source="producer"><label>Producer</label></data> </infobox></includeonly><noinclude>{{Documentation}}</noinclude> 7145bd5ecd9bcafcf1907686b6a57145c9c894ac Template:Album/doc 10 4 6 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Album | title = | image = [e.g. "Example.jpg"] | imagecaption = | artist = | released = | recorded = | length = | label = | producer = }} </pre> == Sample output == {{Album | title = Fleur | image = Example.jpg | artist = Marigold | released = June 2012 | recorded = 2011 | length = 88:88 | label = Spring | producer = Daffy }} <pre> {{Album | title = Fleur | image = Example.jpg | artist = Marigold | released = June 2012 | recorded = 2011 | length = 88:88 | label = Spring | producer = Daffy }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 34c5cd77d0a20c3509b82f0386c7429a8b47a5fb Template:Documentation 10 5 8 2021-08-16T20:00:48Z FANDOM 3 Draft subpages are deprecated with UCP. Default is "/sandbox". wikitext text/x-wiki <includeonly>{| class="article-table plainlinks" style="width:100%;" role="complementary" |- style="font-size:18px;" ! style="padding:0px;" | <div style="width:100%; padding:3px 0px; text-align:center;" class="color1">Template documentation</div> |- | ''Note: portions of the template sample may not be visible without values provided.'' |- | View or edit [[{{{1|Template:{{PAGENAMEE}}/doc}}}|this documentation]]. ([[Template:Documentation|About template documentation]]) |- | Editors can experiment in this template's [{{fullurl:{{FULLPAGENAMEE}}/sandbox|action=edit}} sandbox] and [{{fullurl:{{FULLPAGENAMEE}}/testcases}} test case] pages. |} <div style="margin:0 1em;"> {{{{{1|{{PAGENAME}}/doc}}}}}</div></includeonly><noinclude>{{Documentation}}[[Category:Documentation templates]]</noinclude> ee98b7264ecdfefae4fda4e94a64c1d0e275ee55 Template:T 10 6 10 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki <onlyinclude><nowiki>{{</nowiki>{{#if:{{{prefix|}}}|{{{prefix}}}:}}[[Template:{{{1}}}|{{{1}}}]]<!-- -->{{#if:{{{2|}}}|&#124;<span style="color:#555;">''&lt;{{{2}}}&gt;''</span>}}<!-- -->{{#if:{{{3|}}}|&#124;<span style="color:#555;">''&lt;{{{3}}}&gt;''</span>}}<!-- -->{{#if:{{{4|}}}|&#124;<span style="color:#555;">''&lt;{{{4}}}&gt;''</span>}}<!-- -->{{#if:{{{5|}}}|&#124;<span style="color:#555;">''&lt;{{{5}}}&gt;''</span>}}<!-- -->{{#if:{{{6|}}}|&#124;<span style="color:#555;">''&lt;{{{6}}}&gt;''</span>}}<!-- -->{{#if:{{{7|}}}|&#124;<span style="color:#555;">''&lt;{{{7}}}&gt;''</span>}}<!-- -->{{#if:{{{8|}}}|&#124;<span style="color:#555;">''&lt;{{{8}}}&gt;''</span>}}<!-- -->{{#if:{{{9|}}}|&#124;<span style="color:#555;">''&lt;{{{9}}}&gt;''</span>}}<!-- -->{{#if:{{{10|}}}|&#124;<span style="color:#555;">''&lt;{{{10}}}&gt;''</span>}}<!-- -->{{#if:{{{11|}}}|&#124;<span style="color:#555;">''&lt;{{{11}}}&gt;''</span>}}<!-- -->{{#if:{{{12|}}}|&#124;<span style="color:#555;">''&lt;{{{12}}}&gt;''</span>}}<!-- -->{{#if:{{{13|}}}|&#124;<span style="color:#555;">''&lt;{{{13}}}&gt;''</span>}}<!-- -->{{#if:{{{14|}}}|&#124;<span style="color:#555;">''&lt;{{{14}}}&gt;''</span>}}<!-- -->{{#if:{{{15|}}}|&#124;<span style="color:#555;">''&lt;{{{15}}}&gt;''</span>}}<!-- -->{{#if:{{{16|}}}|&#124;<span style="color:#555;">''&lt;{{{16}}}&gt;''</span>}}<!-- -->{{#if:{{{17|}}}|&#124;<span style="color:#555;">''&lt;{{{17}}}&gt;''</span>}}<!-- -->{{#if:{{{18|}}}|&#124;<span style="color:#555;">''&lt;{{{18}}}&gt;''</span>}}<!-- -->{{#if:{{{19|}}}|&#124;<span style="color:#555;">''&lt;{{{19}}}&gt;''</span>}}<!-- -->{{#if:{{{20|}}}|&#124;<span style="color:#555;">''&lt;{{{20}}}&gt;''</span>}}<!-- -->{{#if:{{{21|}}}|&#124;<span style="color:#555;">''&lt;{{{21}}}&gt;''</span>}}<!-- --><nowiki>}}</nowiki></onlyinclude><noinclude>{{documentation}}</noinclude> 4273916fece7a96eef48125efb615009a1fd6fe6 Template:Documentation/doc 10 7 12 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ==Description== This template is used to insert descriptions on template pages. ==Syntax== Add <code><nowiki><noinclude></nowiki>{{t|Documentation}}<nowiki></noinclude></nowiki></code> at the end of the template page. Add <code><nowiki><noinclude></nowiki>{{t|Documentation|documentation page}}<nowiki></noinclude></nowiki></code> to transclude an alternative page from the /doc subpage. ==Usage== ===On the Template page=== This is the normal format when used: <pre> TEMPLATE CODE <includeonly>Any categories to be inserted into articles by the template</includeonly> <noinclude>{{Documentation}}</noinclude> </pre> ''If your template is not a completed div or table, you may need to close the tags just before <code><nowiki>{{Documentation}}</nowiki></code> is inserted (within the noinclude tags).'' ''A line break right before <code><nowiki>{{Documentation}}</nowiki></code> can also be useful as it helps prevent the documentation template "running into" previous code.'' ===On the documentation page=== The documentation page is usually located on the /doc subpage for a template, but a different page can be specified with the first parameter of the template (see [[#Syntax|Syntax]]). Normally, you will want to write something like the following on the documentation page: <pre> ==Description== This template is used to do something. ==Syntax== Type <code>{{t|templatename}}</code> somewhere. ==Samples== <code>&lt;nowiki>{{templatename|input}}&lt;/nowiki></code> results in... {{templatename|input}} <includeonly>Any categories for the template itself</includeonly> <noinclude>[[Category:Template documentation]]</noinclude> </pre> Use any or all of the above description/syntax/sample output sections. You may also want to add "see also" or other sections. Note that the above example also uses the [[Template:T]] template. <includeonly>[[Category:Documentation templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 58ca364cb71b551e4a71ddf3046cf41c84db0d57 Template:T/doc 10 8 14 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ;Description A template link with a variable number of parameters (0-20). ;Syntax :{{t|t|parameter1|parameter2|parameter3|parameter4|...|parameter20}} <!-- self-referential examples! --> ;Source :Improved version not needing t/piece subtemplate developed on [http://templates.fandom.com Templates wiki] see the [http://templates.fandom.com/index.php?title=Template:T&action=history list of authors]. Copied here via CC-By-SA 3.0 license. ;Example :{{t|t|param1|param2}} <includeonly>[[Category:General wiki templates]]</includeonly> <noinclude>[[Category:Template documentation]]</noinclude> 6f7307b6bcfef75efcc1d71fc932366c04cd61b3 Template:Character 10 9 16 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki <includeonly><infobox type="Character"> <title source="name"/> <image source="image"> <caption source="imagecaption" /> </image> <group> <data source="aliases"><label>Aliases</label></data> <data source="relatives"><label>Relatives</label></data> <data source="affiliation"><label>Affiliation</label></data> <data source="occupation"><label>Occupation</label></data> </group> <group> <header>Biographical information</header> <data source="marital"><label>Marital status</label></data> <data source="birthDate"><label>Date of birth</label></data> <data source="birthPlace"><label>Place of birth</label></data> <data source="deathDate"><label>Date of death</label></data> <data source="deathPlace"><label>Place of death</label></data> </group> <group> <header>Physical description</header> <data source="species"><label>Species</label></data> <data source="gender"><label>Gender</label></data> <data source="height"><label>Height</label></data> <data source="weight"><label>Weight</label></data> <data source="eyes"><label>Eye color</label></data> </group> <group> <header>Appearances</header> <data source="portrayedby"><label>Portrayed by</label></data> <data source="appearsin"><label>Appears in</label></data> <data source="debut"><label>Debut</label></data> </group> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Characters]]}}</includeonly><noinclude>{{Documentation}}</noinclude> f63ba56dbc9f4a25683ff5d7104509d0e8bb9eda Template:Character/doc 10 10 18 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Character | name = | image = | imagecaption = | aliases = | relatives = | affiliation = | occupation = | marital = | birthDate = | birthPlace = | deathDate = | deathPlace = | species = | gender = | height = | weight = | eyes = | portrayedby = | appearsin = | debut = }} </pre> == Sample output == {{Character | name = Flowa | image = Example.jpg | imagecaption = Flowa, at rest | aliases = Flo | relatives = | affiliation = | occupation = | marital = | birthDate = July 21st, 2013 | birthPlace = Iowa | deathDate = | deathPlace = | species = Plant | gender = | height = | weight = | eyes = | portrayedby = | appearsin = | debut = }} <pre> {{Character | name = Flowa | image = Example.jpg | imagecaption = Flowa, at rest | aliases = Flo | relatives = | affiliation = | occupation = | marital = | birthDate = July 21st, 2013 | birthPlace = Iowa | deathDate = | deathPlace = | species = Plant | gender = | height = | weight = | eyes = | portrayedby = | appearsin = | debut = }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 6ddf3451fd7140d6b498a17d53162a4ccd65e691 Template:Book 10 11 20 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki <includeonly><infobox type="Book"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <data source="author"><label>Author</label></data> <data source="illustrator"><label>Illustrator</label></data> <data source="datePublished"><label>Published on</label></data> <data source="publisher"><label>Publisher</label></data> <group layout="horizontal"> <header>Publication order</header> <data source="previous"><label>Previous</label></data> <data source="next"><label>Next</label></data> </group> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Books]]}}</includeonly><noinclude>{{Documentation}}</noinclude> c4bc425c60ee6f1a263f67a75f6d26aafc236c03 Template:Book/doc 10 12 22 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre>{{Book | title = | image = [e.g. "Example.jpg"] | author = | illustrator = | datePublished = | publisher = | previous = | next = }}</pre> == Sample output == {{Book | title = The Adventures of Flower | image = Example.jpg | author = Alice | illustrator = Bob | datePublished = April 1928 | publisher = Arthur's | previous = Book One | next = Book Three }} <pre>{{Book | title = The Adventures of Flower | image = Example.jpg | author = Alice | illustrator = Bob | datePublished = April 1928 | publisher = Arthur's | previous = Book One | next = Book Three }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 7320d1953158c6673ed6ce2be7bc35e2356522e5 Template:Episode 10 13 24 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki <includeonly><infobox type="Episode"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <data source="partOfSeason"><label>Season</label></data> <data source="episodeNumber"><label>Episode</label></data> <data source="airDate"><label>Air date</label></data> <data source="writer"><label>Writer</label></data> <data source="director"><label>Director</label></data> <group layout="horizontal"> <header>Episode guide</header> <data source="previousEpisode"><label>Previous</label></data> <data source="nextEpisode"><label>Next</label></data> </group> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Episodes]]}}</includeonly><noinclude>{{Documentation}}</noinclude> 222b04973118bf9a11e3e5f3a034c07b6ec30fee Template:Episode/doc 10 14 26 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre>{{Episode | title = | partOfSeason = | episodeNumber = | image = [e.g. "Example.jpg"] | airDate = | writer = | director = | previousEpisode = | nextEpisode = }}</pre> == Sample output == {{Episode | title = Flower of Babel | partOfSeason = One | episodeNumber = Three | image = Example.jpg | airDate = Unaired | writer = D. Righta | director = A. di Rektour | previousEpisode = Episode Two | nextEpisode = Episode Four }}<pre>{{Episode | title = Flower of Babel | partOfSeason = One | episodeNumber = Three | image = Example.jpg | airDate = Unaired | writer = D. Righta | director = A. di Rektour | previousEpisode = Episode Two | nextEpisode = Episode Four }}</pre> <includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 422683315393b9908127727460675544f6ffb8cf Template:Event 10 15 28 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki <includeonly><infobox type="Event"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <data source="performers"><label>Performers</label></data> <data source="date"><label>Date</label></data> <data source="location"><label>Location</label></data> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Events]]}}</includeonly><noinclude>{{Documentation}}</noinclude> d66b112135e43b8474d30a6dab0feaab6588dfe8 Template:Event/doc 10 16 30 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Event | title = | image = [e.g. "Example.jpg"] | imagecaption = | performers = | date = | location = }} </pre> == Sample output == {{Event | title = Flower du Jour | image = Example.jpg | performers = Awesome Ones | date = All the time | location = Everywhere }} <pre> {{Event | title = Flower du Jour | image = Example.jpg | performers = Awesome Ones | date = All the time | location = Everywhere }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 1502585ceb0f0a7e1e70edc0fa8c88720e7da905 Template:Item 10 17 32 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki <includeonly><infobox type="Item"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <data source="type"><label>Type</label></data> <data source="effects"><label>Effects</label></data> <data source="source"><label>Source</label></data> <data source="buy"><label>Cost to buy</label></data> <data source="sell"><label>Cost to sell</label></data> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Items]]}}</includeonly><noinclude>{{Documentation}}</noinclude> 1c76f47b4d1d6c296c09c245c7dd7d4efc9ff9e6 Template:Item/doc 10 18 34 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Item | title = | image = [e.g. "Example.jpg"] | imagecaption = | type = | effects = | source = | buy = | sell = }} </pre> == Sample output == {{Item | title = Power Flower | image = Example.jpg | type = Food | effects = +1 Fire | source = Vendor | buy = 5g | sell = 1g }}<pre> {{Item | title = Power Flower | image = Example.jpg | type = Food | effects = +1 Fire | source = Vendor | buy = 5g | sell = 1g }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> ecd61f0a9df462e9790349a7ef0034b375ef0e2b Template:Location 10 19 36 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki <includeonly><infobox type="Location"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <image source="map"><caption source="mapcaption"/></image> <data source="type"><label>Type</label></data> <data source="level"><label>Level</label></data> <data source="location"><label>Location</label></data> <data source="inhabitants"><label>Inhabitants</label></data> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Locations]]}}</includeonly><noinclude>{{Documentation}}</noinclude> 74c089bf3093e560bd6a2144977d9d0bc5faebc0 Template:Location/doc 10 20 38 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Location | title = | image = [e.g. "Example.jpg"] | imagecaption = | map = [e.g. "Example.jpg"] | mapcaption = | type = | level = | location = | inhabitants = }} </pre> == Sample output == {{Location | title = Flora Island | image = Example.jpg | imagecaption = The island | map = Example.jpg | mapcaption = Zone map | type = Contested | level = 1-5 | location = Earth | inhabitants = Stompy Humans, Drinky Bees }}<pre> {{Location | title = Flora Island | image = Example.jpg | imagecaption = The island | map = Example.jpg | mapcaption = Zone map | type = Contested | level = 1-5 | location = Earth | inhabitants = Stompy Humans, Drinky Bees }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> e3e627290fa1c04d98083b44bcd2fa5cb562e13c Template:Navbox 10 21 40 2021-08-16T20:00:48Z FANDOM 3 1 revision imported wikitext text/x-wiki {| style="width:100%; margin-top:1em; border:1px solid #999; font-size:90%; text-align:center;" |- ! style="padding:0.2em 0.5em;" nowrap="nowrap" class="color1" | {{{header}}} |- | style="padding:0.2em 0.5em;" | {{{body}}} |}<noinclude> {{documentation}}</noinclude> 21aa3440d9c06c537ca5808c298e155d57e8dc90 Template:Navbox/doc 10 22 42 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ;Description :This template is used to create a basic navigation box. You can do so by calling the template, via the steps under "Syntax", but it is recommended to '''copy the code verbatim''' via the steps under "Navbox Creation". ;Navbox Creation <inputbox> type=create prefix=Template: preload=Template:Navbox editintro=Template:Navbox/doc buttonlabel=Make your navbox! default = Navbox Foo </inputbox> #Think of a name for your navbox, like "Navbox Foo". Type it in the above field, press the button, and save the page immediately. Be ready to return to ''this'' page to see the rest of the instructions. #Edit the resulting page in source mode. #Replace <code>{{{header}}}</code> with the text you would like to appear in the header. #Replace <code>{{{body}}}</code> with the text you would like to appear in the body. #To add another section, copy these four lines of code immediately below the lines in the existing code that they resemble: <pre>|- ! style="padding:0.2em 0.5em;" nowrap="nowrap" class="color1" | {{{header}}} |- | style="padding:0.2em 0.5em;" | {{{body}}}</pre> Save the page once you have added as many sections as you needed, and filled them with content. You may also want to create a /doc subpage explaining that to call the resulting template, one must only type <code>{<nowiki/>{Navbox Foo}}</code>, or rather, whatever we decided to name the template in step 1. ;Syntax <pre>{{navbox |header=Land of Bob |body=This <nowiki>[[place]]</nowiki> and that <nowiki>[[place]]</nowiki>. }}</pre> :Results in... {{navbox |header=Land of Bob |body=This <nowiki>[[place]]</nowiki> and that <nowiki>[[place]]</nowiki>. }} <includeonly>[[Category:Navbox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 4b1a1bf5f00c2d159d30d8f8bc525309ac16d406 Template:Quest 10 23 44 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki <includeonly><infobox type="Quest"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <data source="start"><label>Start</label></data> <data source="end"><label>End</label></data> <data source="prerequisites"><label>Prerequisites</label></data> <data source="level"><label>Level</label></data> <data source="location"><label>Location</label></data> <data source="rewards"><label>Rewards</label></data> <group layout="horizontal"> <header>Quest progression</header> <data source="previous"><label>Previous</label></data> <data source="next"><label>Next</label></data> </group> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Quests]]}}</includeonly><noinclude>{{Documentation}}</noinclude> 1057bf1c3220419334e60f6b01c07995f871d8f8 Template:Quest/doc 10 24 46 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Quest | title = | image = [e.g. "Example.jpg"] | imagecaption = | start = | end = | prerequisites = | level = | location = | rewards = | previous = | next = }} </pre> == Sample output == {{Quest | title = Example infobox | image = Example.jpg | start = Chrys | end = Geran | prerequisites = None | level = 5 | location = Earth | rewards = Justice-Wrought Petals | previous = A | next = C }} <pre>{{Quest | title = Example infobox | image = Example.jpg | start = Chrys | end = Geran | prerequisites = None | level = 5 | location = Earth | rewards = Justice-Wrought Petals | previous = A | next = C }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 3c80ee4fc3fe45023bd67b3c400b2e64f4f2892a File:Wiki.png 6 25 48 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki [[Category:Wiki skin images]] f0235f85e2414431e046ae251792bf050daef5f7 Template:Permission 10 26 50 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki {{LicenseBox|text=''This file is copyrighted. The copyright holder has given permission for its use.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Files used with permission]]</includeonly>}}<noinclude> {{documentation}}</noinclude> 5940d21c4cf55ab1e46623c8d7202220620ea3fc Template:Fairuse 10 27 52 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki {{LicenseBox|text=''This file is copyrighted. It will be used in a way that qualifies as fair use under US copyright law.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Fairuse files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> 5db6645c70193dbeb65eed77de07f36451e1145c Template:Self 10 28 54 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki {{LicenseBox|text=''This file was uploaded by the photographer or author.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Files uploaded by the photographer or author]]</includeonly>}}<noinclude> {{documentation}}</noinclude> c3570ab7a69cc0cdf1478e8b7d45f8c70f1214c0 Template:From Wikimedia 10 29 56 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki {{LicenseBox|text=''This file was originally uploaded on Wikipedia or another Wikimedia project.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Files from WikiMedia projects]]</includeonly>}}<noinclude> {{documentation}}</noinclude> 72fed0e402d6912cd6381ef1b21b52929b041d8c Template:CC-BY-SA 10 30 58 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki {{LicenseBox|text=''This file is licensed under the [http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-Share Alike License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:CC-BY-SA files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> b7cc0c0ae4d0cbff86fb66f332cdbfd9ef0c67f1 Template:Other free 10 31 60 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki {{LicenseBox|text=''This file is licensed under a free license.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Freely licensed files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> a0e93bfb8a804eb54e67553ff50ba57b368ba00d Template:PD 10 32 62 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki {{LicenseBox|text=''This file is in the public domain''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Public domain files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> daf709f747ba95ea06112acade4c78177a475e30 Template:Permission/doc 10 33 64 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ;Description :This template is used to mark images as being copyrighted, but the copyright holder has given permission for its use. ;Syntax :Type <code>{{t|permission}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> e2fc5fa15609d14fe9de91b503904f2b3f363afa Template:Fairuse/doc 10 34 66 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ;Description :This template is used to mark images as fair use. ;Syntax :Type <code>{{t|fairuse}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> a0b1f9487b6ecaaa0f6ea70533a69c17d42e01ff Template:Self/doc 10 35 68 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ;Description :This template is used to mark images as having been uploaded by the photographer or author. ;Syntax :Type <code>{{t|self}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 8daf839df62f0465275f6ef57c3998c9af9e4e1d Template:From Wikimedia/doc 10 36 70 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ;Description :This template is used to mark images as having been uploaded on [[wikipedia:|Wikipedia]] or another [[wikimedia:|Wikimedia]] project. ;Syntax :Type <code>{{t|From Wikimedia}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 077fe0f228cb18bf949fee95011ec7b36fe64033 Template:CC-BY-SA/doc 10 37 72 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ;Description :This template is used to mark images with the CC-BY-SA license. ;Syntax :Type <code>{{t|CC-BY-SA}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 4fa145ced3f3a218b897f635df8d678eeff73464 Template:Other free/doc 10 38 74 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ;Description :This template is used to mark images with a free license not covered by other image templates. ;Syntax :Type <code>{{t|Other free}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> f4a03ee383d67da50c93408169b82b8217ff1404 Template:PD/doc 10 39 76 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ;Description :This template is used to mark images as being in the public domain. ;Syntax :Type <code>{{t|PD}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> bf14002371e6786761dfb4a58f4fdaf44062b8cc Template:Topic 10 40 78 2021-08-16T20:00:48Z FANDOM 3 Created page with "<includeonly>{{#sub:{{#replace:{{SITENAME}}| Wiki}}|-{{#len:{{#replace:{{SITENAME}}| Wiki}}}}-1}}</includeonly><noinclude>{{documentation}}</noinclude>" wikitext text/x-wiki <includeonly>{{#sub:{{#replace:{{SITENAME}}| Wiki}}|-{{#len:{{#replace:{{SITENAME}}| Wiki}}}}-1}}</includeonly><noinclude>{{documentation}}</noinclude> e8c5bb53e6d20ba0b81fcfa08813051675219442 Template:Topic/doc 10 41 80 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki == Description == This template uses your wiki's <code>SITENAME</code> and strips off the word "wiki" leaving what is in most cases the text describing the topic of your wiki. To use this template in its basic form, simply add the {{T|{{BASEPAGENAME}}}} template wherever you want your topic to appear in a sentence or section. If your wiki's <code>SITENAME</code> minus the word "wiki" is not a good descriptor for your wiki's topic, you may also simply edit the template and replace it with just the text you want displayed. == Syntax == <pre>{{Topic}}</pre> == Sample output == {{Topic}} <includeonly>[[Category:Templates]]</includeonly><noinclude>[[Category:Template documentation|{{PAGENAME}}]]</noinclude> 54e98cb6fa2fa6aec9e9fa9b138b0cd6d5bf321b Category:Infobox templates 14 42 82 2021-08-16T20:00:48Z FANDOM 3 Created page with "[[Category:Templates]]" wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Templates 14 43 84 2021-08-16T20:00:48Z FANDOM 3 Created page with "[[Category:Maintenance]]" wikitext text/x-wiki [[Category:Maintenance]] a106a39e26c77e7b2ec90cb83728a6446cb6a1a1 Category:Maintenance 14 44 86 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki The subcategories of this category contain pages that have been identified as needing attention for one or more of the following reasons: * Changes have been suggested that should be discussed first or are under discussion. * The page has flaws that need addressing by an editor with the knowledge or skills to help. * The action the page needs requires special rights. ''See also:'' {{cols|2| * [[Special:BrokenRedirects|Broken redirects]] * [[Special:DoubleRedirects|Double redirects]] * [[Special:UncategorizedCategories|Uncategorized categories]] * [[Special:UncategorizedFiles|Uncategorized files]] * [[Special:UncategorizedPages|Uncategorized pages]] * [[Special:UncategorizedTemplates|Uncategorized templates]] * [[Special:WantedCategories|Wanted categories]] * [[Special:WantedFiles|Wanted files]] * [[Special:WantedPages|Wanted pages]] * [[Special:WantedTemplates|Wanted templates]] * [[Special:TrackingCategories|Other special tracking categories]] }} [[Category:{{SITENAME}}]] 3646bf22bbf81213a9b8ea11df02ceee8866b235 Category:Image license templates 14 45 88 2021-08-16T20:00:48Z FANDOM 3 Created page with "[[Category:Templates]]" wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Navbox templates 14 46 90 2021-08-16T20:00:48Z FANDOM 3 Created page with "[[Category:Templates]]" wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:General wiki templates 14 47 92 2021-08-16T20:00:48Z FANDOM 3 Created page with "[[Category:Templates]]" wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Documentation templates 14 48 94 2021-08-16T20:00:48Z FANDOM 3 Created page with "[[Category:Templates]]" wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Template documentation 14 49 96 2021-08-16T20:00:48Z FANDOM 3 Created page with "The templates in this category contain documentation about other templates. The are automatically put here by the {{T|Documentation}} template. [[Category:Templates]]" wikitext text/x-wiki The templates in this category contain documentation about other templates. The are automatically put here by the {{T|Documentation}} template. [[Category:Templates]] e1cf9416700d7877b308b2f9051b33cd028dd11d Template:Main 10 50 98 2021-08-16T20:00:48Z FANDOM 3 1 revision imported wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|main}}</includeonly> <noinclude>{{Documentation|:Template:Hatnote/doc}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Main_article --></noinclude> de20b6a379396a3458f12d72e486fce07869137c Template:See also 10 51 100 2021-08-16T20:00:48Z FANDOM 3 1 revision imported wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|seeAlso}}</includeonly> <noinclude>{{Documentation|:Template:Hatnote/doc}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Hatnote --></noinclude> e245d8ecb350a8965723151f4fad9d3cafedad60 Template:About 10 52 102 2021-08-16T20:00:48Z FANDOM 3 1 revision imported wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|about}}</includeonly> <noinclude>{{Documentation|:Template:Hatnote/doc}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:About --></noinclude> 510109cae7f705952c7a0279d73a7a44fa82d41f Template:For 10 53 104 2021-08-16T20:00:48Z FANDOM 3 1 revision imported wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|For}}</includeonly> <noinclude>{{Documentation|:Template:Hatnote/doc}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Hatnote --></noinclude> 6caebf265784c02a3dba04fe77eb5c5afb52fbd4 Template:Further 10 54 106 2021-08-16T20:00:48Z FANDOM 3 1 revision imported wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|further}}</includeonly> <noinclude>{{Documentation|:Template:Hatnote/doc}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Hatnote --></noinclude> 2b274c2a078defdd0995162869db05d3fc772067 Template:Hatnote 10 55 108 2021-08-16T20:00:48Z FANDOM 3 1 revision imported wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|hatnote}}</includeonly><noinclude>{{Documentation}}</noinclude> 47651229f8ca41785babe25d56cdae7ac03ad9e1 Template:Delete 10 56 110 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki {{MessageBox |header = Candidate for deletion |type = delete |text = This page has been nominated for removal from the wiki. |comment = Remember to check [[Special:Whatlinkshere/{{FULLPAGENAME}}|what links here]] and [{{fullurl:{{FULLPAGENAME}}|action=history}} the page history] before deletion. |class = notice hidden plainlinks |id = delete }}<includeonly>[[Category:Candidates for deletion]]</includeonly><noinclude> {{Documentation}}</noinclude> 4173b2533a1aa36de4f2777956f1eae8889808ba Template:Quote 10 57 112 2021-08-16T20:00:48Z FANDOM 3 1 revision imported wikitext text/x-wiki {{#invoke:Quote|quote}}<noinclude>{{Documentation}}<!-- For a more traditional wikitext version of this template, see https://starter.fandom.com/wiki/Template:Quote?oldid=4277 --></noinclude> bf6ed2ef0e8d676125dfd9d9b8b8ad72a18049e3 Template:Disambiguation 10 58 114 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki {{MessageBox | header = Disambiguation page for {{PAGENAME}} | type = disambiguation | text = The following is a list of links to pages that might share the same title. | comment = Please follow one of the disambiguation links below or [[Special:Search|search]] to find the page you were looking for if it is not listed. If an [[Special:Whatlinkshere/{{FULLPAGENAME}}|internal link]] led you here, you may wish to change the link to point directly to the intended article. | class = notice hidden | id = disambiguation}} <includeonly>__DISAMBIG__[[Category:Disambiguations]]</includeonly><noinclude> {{documentation}}</noinclude> 16605ae9114395add2e702cee409d0bd2deb7603 Template:MessageBox 10 59 116 2021-08-16T20:00:48Z FANDOM 3 1 revision imported wikitext text/x-wiki {{#invoke:Mbox|main}}<noinclude>{{Documentation}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Ambox --></noinclude> fab8a2df56fd74147e1709af14e8993cfab7ebe7 Template:Dialogue 10 60 118 2021-08-16T20:00:48Z FANDOM 3 1 revision imported wikitext text/x-wiki <includeonly><blockquote data-format="dialogue">{{#invoke:Dialogue|main}}</blockquote></includeonly><noinclude>{{Documentation}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Dialogue --></noinclude> 400ad4d61c7eff1f67db8a2116441090d803cb3d Template:Namespace 10 61 120 2021-08-16T20:00:48Z FANDOM 3 1 revision imported wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Namespace detect|main}}<noinclude>{{Documentation}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Namespace_detect --></noinclude> f5b6ed2c0363fd704c716a6e5420a5cc0546392f Template:Hatnote/doc 10 62 122 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki The hatnotes used for adding links between articles where more context is important. Broadly speaking, a hatnote should answer a readers' question: Am I on the right page? == Usage == ; Basic usage: &#123;{hatnote|''text''}} ; All parameters: &#123;{hatnote|''text''|extraclasses=''extra classes''|selfref=''yes''|category=''no''}} == Parameters == This template accepts the following parameters: * <code>1</code> - the hatnote text (required) * <code>extraclasses</code> - any extra CSS classes to be added. * <code>selfref</code> - If set to "yes", "y", "true" or "1", adds the CSS class "selfref". This is used to denote self-references. * <code>category</code> - If set to "no", "n", "false", or "0", suppresses the error tracking category ([[:Category:Hatnote templates with errors]]). This has an effect only if the leftmost parameter (the hatnote text) is omitted. == Example == * <code><nowiki>{{hatnote|Example hatnote text}}</nowiki></code> → {{hatnote|Example hatnote text}} == Typical types == {{T|Main}}, {{T|Further}} are very similar, but indicate either the primary page for a topic or more detailed related topic. They have a nearly identical set of parameters. ;{{T|Main}}: When an article is large, it often has a summary and a link to a main article. This template is used after the heading of the summary, to indicate a link to the subtopic article that has been summarized. ;{{T|Further}}: Used to link to articles containing further information on this topic. ;{{T|See also}}: Used to link to additional articles on related topics. :;{{T|Main|Main Page}} →:{{Main|Main Page}} :;{{T|Main|Main Page|Main Page}} →:{{Main|Main Page|Main Page}} :*<code>1</code>, <code>2</code>, <code>3</code>, ... – the pages to link to. If no page names are specified, the current page name is used instead (without the namespace prefix). Categories and files are automatically escaped with the [[w:Help:Colon trick|colon trick]], and links to sections are automatically formatted as ''page § section'', rather than the MediaWiki default of ''page#section''. :*<code>l1</code>, <code>l2</code>, <code>l3</code>, ... ''or''<code>label 1</code>, <code>label 2</code>, <code>label 3</code>, ... – optional labels for each of the pages to link to (this is for articles where a piped link would be used). Note that the extra parameters use a lower case 'L', for example, <code>l1</code>, <u>not</u> <code>L1</code>. :*<code>selfref</code> – if set to "yes", "y", "true" or "1", adds the CSS class "selfref". This is used to denote self-references. == Disambiguation == Templates such as {{T|About}} and {{T|For}} are to be used in cases where a disambiguation is not needed. In general, disambiguation pages should only be used for 4 or more titles that are mostly or entirely identical, except for a qualifier. ;{{T|About}}: Links the reader to other articles with similar titles or concepts that they may have been seeking instead. The template has several formats, including: :;{{T|About|Use1}} →:{{About|}} :;{{T|About|Use1|<nowiki/>|Main Page}} →:{{About|Use1||Main Page}} :;{{T|About|Use1|<nowiki/>|Main Page|and|Main Page}} →:{{About|Use1||Main Page|and|Main Page}} :;{{T|About|Use1|Use2|Main Page}} →:{{About|Use1|Use2|Main Page}} :;{{T|About|Use1|Use2|Main Page|and|Main Page}} →:{{About|Use1|Use2|Main Page|and|Main Page}} :;{{T|About|Use1|Use2|Main Page|other uses}} →:{{About|Use1|Use2|Main Page|other uses}} Alternately, a <code>section=yes</code> parameter can be added to the {{T|About}} template for use at the top of a section. When using this parameter, the wording in the template changes to specify that it is being used in a section: :;{{T|About|Use1|<nowiki>section=yes</nowiki>}} →:{{About|Use1|section=yes}} :;{{T|About|Use1|<nowiki/>|Main Page|<nowiki>section=yes</nowiki>}} →:{{About|Use1||Main Page|section=yes}} :;{{T|About|Use1|Use2|Main Page|<nowiki>section=yes</nowiki>}} →:{{About|Use1|Use2|Main Page|section=yes}} :;{{T|About|Use1|Use2|Main Page|and|Main Page|<nowiki>section=yes</nowiki>}} →:{{About|Use1|Use2|Main Page|and|Main Page|section=yes}} :;{{T|About|Use1|Use2|Main Page|other uses|<nowiki>section=yes</nowiki>}} →:{{About|Use1|Use2|Main Page|other uses|section=yes}} A <var>text</var> option adds text to the end; note that this should be only used when truly necessary, and the other hatnote templates listed below don't suffice. This template also supports <var>selfref</var>. ;{{T|For}}: Provides links to up to four articles or disambiguation pages. It accepts zero to five parameters. :;If used without parameters on a page named ''Foo'', the result is ::{{hatnote|For other uses, see [[:Foo (disambiguation)]].}} :;The first parameter changes the hatnote itself and should be plain text, e.g. {{T|For|similar terms}} yields ::{{hatnote|For similar terms, see [[:Foo (disambiguation)]].}} :;The second parameter is used to change the resultant link, e.g. {{T|For|similar terms|Main Page}} yields ::{{For|similar terms|Main Page}} :;The third, fourth and fifth parameters are used to give one, two, or three supplementary links: :*{{For|similar terms|Main Page|Main Page}} :*{{For|similar terms|Main Page|Main Page|Main Page}} :*{{For|similar terms|Main Page|Main Page|Main Page|Main Page}} :the last being produced by e.g. {{T|For|similar terms|Main Page|Main Page|Main Page|Main Page}}. == Errors == If no hatnote text is supplied, the template will output the following message: * {{hatnote|category=no}} If you see this error message, it is for one of four reasons: # No parameters were specified (the template code was <code><nowiki>{{hatnote}}</nowiki></code>). Please use <code><nowiki>{{hatnote|</nowiki>''text''<nowiki>}}</nowiki></code> instead. # Some parameters were specified, but the hatnote text wasn't included. For example, the template text <code><nowiki>{{hatnote|extraclasses=seealso}}</nowiki></code> will produce this error. Please use (for example) <code><nowiki>{{hatnote|</nowiki>''text''<nowiki>|extraclasses=seealso}}</nowiki></code> instead. # The hatnote text was specified, but that text contains an equals sign ("="). The equals sign has a special meaning in template code, and because of this it cannot be used in template parameters that do not specify a parameter name. For example, the template code <code><nowiki>{{hatnote|2+2=4}}</nowiki></code> will produce this error. To work around this, you can specify the parameter name explicitly by using <code>1=</code> before the hatnote text, like this: <code><nowiki>{{hatnote|1=2+2=4}}</nowiki></code>. # You tried to access [[Module:Hatnote]] directly by using <code><nowiki>{{#invoke:hatnote|hatnote|</nowiki>''text''<nowiki>}}</nowiki></code>. Use of #invoke in this way has been disabled for performance reasons. Please use <code><nowiki>{{hatnote|</nowiki>''text''<nowiki>}}</nowiki></code> instead. Pages that contain this error message are tracked in [[:Category:Hatnote templates with errors]]. == Technical details == This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Hatnote|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Hatnote|Hatnote on Templates Wiki]]'''. The HTML code produced by this template looks like this: * <code><nowiki><div role="note" class="hatnote"></nowiki>''hatnote text''<nowiki></div></nowiki></code> <includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> f89b62bda227691a45fd6d42d8bf89b151436cd2 Template:Delete/doc 10 63 124 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ;Description :This template is used to mark pages for deletion, categorizing them in [[:Category:Candidates for deletion]]. ;Syntax :Type <code>{{t|delete}}</code> on the page to be deleted.''' <includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> baa263e149fb470c182f0de3af57178739e61a86 Template:Quote/doc 10 64 126 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ==Description== To use this template, enter the following and fill in the appropriate fields. Most fields left blank will not show up. ==Syntax== <pre> {{Quote | quote = | speaker = | source = }} </pre> As an alternative, these can be placed in positional order. ==Samples== {{Quote | quote = When you play the game of thrones, you win or you die. | speaker = [[w:c:gameofthrones:Cersei Lannister|Cersei Lannister]] | source = [[w:c:gameofthrones:You Win or You Die|"You Win or You Die"]] }} <pre> {{Quote | quote = When you play the game of thrones, you win or you die. | speaker = [[w:c:gameofthrones:Cersei Lannister|Cersei Lannister]] | source = [[w:c:gameofthrones:You Win or You Die|"You Win or You Die"]] }} </pre> or <pre> {{Quote | When you play the game of thrones, you win or you die. | [[w:c:gameofthrones:Cersei Lannister|Cersei Lannister]] | [[w:c:gameofthrones:You Win or You Die|"You Win or You Die"]] }} </pre> == Technical details == This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Quote|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Quote|Quote on Templates Wiki]]'''. <includeonly>[[Category:Quote templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 9257007bdd810476e8723e435841c3f133a204f2 Template:Disambiguation/doc 10 65 128 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ;Description :Marks an article as a disambiguation page, adding a banner to the article and categorizing it under [[:Category:Disambiguations]]. ;Syntax :Add <code>{{t|disambiguation}}</code> at the top of a disambiguation page. <includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> c0a52d0ac40d9827b4462625985906e37c6f83c9 Template:MessageBox/doc 10 66 130 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki {{T|MessageBox}} is a template for creating message boxes. It is highly customizable with classes, inline styles, and provided CSS selectors. Optional features such as an image, left border, right-side text (for e.g. shortcuts), and a dismiss function. It uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Mbox|on the Global Lua Module page]]. This version is modified to produce a starter style, based on the [[w:c:dev:mediawiki:Global Lua Modules/Mbox.css|basic style from the module]]. To use the full capabilities of this module and remove the default styling, remove the indicated portions of [[Module:Mbox]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Ambox|Ambox on Templates Wiki]]'''. ==Parameters== For examples of how to use these parameters, see [[#Examples]]. {| class="wikitable" style="width: 100%" ! Parameter name ! Description ! Required? ! Default |- | <code>class</code> | Additional classes to the root <code>.mbox</code> element. | No | — |- | <code>bordercolor</code> | The color of the thick left-most border. | No | Stylesheet default |- | <code>type</code> | Type of mbox as declared as in CSS with variables. Affects color of the thick left-most border. See [[#Using types]]. | No | — |- | <code>bgcolor</code> | The color of the mbox's background. | No | Stylesheet default |- | <code>style</code> | Additional inline styles to the root <code>.mbox</code> element. | No | — |- | <code>image</code> | An image to be added to the left of all text content. | No | — |- | <code>imagewidth</code> | The width of the image (height automatically adjusts). | No | <code>60px</code> |- | <code>imagelink</code> | The link to which the image points (could link to the relevant maintenance category, per example). If not included, the image will be un-clickable. | No | — |- | <code>header</code> | The header (bold text placed at the top). This is typically used to very briefly explain the subject of the mbox itself, as when the mbox is closed, only the header will show. | No | — |- | <code>text</code> | Non-bold text placed below the header, typically used to explain the subject of the mbox in further or additional detail. When the mbox is closed, this text will be hidden. | No | — |- | <code>comment</code> | Smaller non-bold text placed below the main text, typically used to add additional links or context about the notice. When the mbox is closed, this text will be hidden. | No | — |- | <code>aside</code> | Text placed within a small allocation on the right side separated by a light gray border. Most commonly used to show shortcuts to the page in question (such as on policy pages). When the mbox is closed, this text will be hidden. | No | — |- | <code>id</code> | By default, one close button will close all mboxes on the page. However, to change this, this parameter may be used, given as the name of the mbox implementation (e.g., "Template:Cleanup" would have <code><nowiki>|id=cleanup</nowiki></code>). | No | — |- | <code>collapsed</code> | By default, the mbox will be uncollapsed, and the full contents will be shown. However, to change this, this parameter may be used to set an mbox as collapsed by default (e.g., <code><nowiki>|collapsed=true</nowiki></code> would set the mbox to be collapsed by default). | No | — |} ==Design== Some communities may wish to customize the appearance of the mboxes. The most common styling options are provided illustrated in CSS. <syntaxhighlight lang="css" class="mw-collapsible mw-collapsed"> .mbox { /* the background of the entire box */; background-color: ; /* the border color of the entire box */ border-color: ; /* the border thickness of the entire box */ border-width: ; /* the default thick left border color; note this can be changed from within the template implementations using the "color" parameter */ border-left-color: ; /* the rounded-ness of the corners */; border-radius: ; /* the baseline font-size of the mbox */ font-size: ; } .mbox__content { /* the padding inside the mbox */ padding: ; } .mbox__content__image { /* the minimum width of the mbox's image (if bigger, use the "imagewidth" parameter in the template) */ width: ; /* the spacing to the left of the text (i.e., the right of the image) */ padding-right: ; } .mbox__content__text__comment { /* the size of the text in the "comment" parameter */ font-size: ; } .mbox__content__aside { /* any particular modifications to the "aside" area can go here */ /* the maximum width of the aside area */ width: ; } .mbox__close { /* the appearance of the close symbol here */ } .mbox__close:after { /* overwrite "content" here if you do not wish for the close symbol to be × */ content: ''; } .mw-collapsed + .mbox__close { /* modifications to the close symbol when the box is closed */ } .mw-collapsed + .mbox__close:after { /* overwrite "content" here if you do not wish for the close symbol to be + when the box is closed */ content: ''; } </syntaxhighlight> ; Technical notes * Additional inline styles to the root <code>.mbox</code> element can be achieved via the <code>style</code> parameter in the template. == Examples == === Basic MessageBox === <pre> {{MessageBox |header = Header text here |text = Normal text here |id = test1 }}</pre> Produces: {{#invoke:Mbox|main |header = Header text here |text = Normal text here |id = test1 }} === Using types === To use types, CSS variables must be added, such as: <syntaxhighlight lang="css"> :root { --type-important: rgba(200, 0, 0, 0.8); --type-moderate: rgba(233, 124, 47, 0.8); --type-minor: rgba(241, 197, 37, 0.8); } </syntaxhighlight> If added: <pre> {{MessageBox |header = Header text here |type = important |text = Normal text here |id = test2 }}</pre> Produces: {{#invoke:Mbox|main |header = Header text here |type = important |text = Normal text here |id = test2 }} Depending on your styling, there may not be a visual difference in the above example. === With an image === <pre> {{MessageBox |header = Header text here |text = Normal text here |image = Wiki.png |imagelink = |imagewidth = 50px |id = test3 }}</pre> Produces: {{#invoke:Mbox|main |header = Header text here |text = Normal text here |image = Wiki.png |imagelink = |imagewidth = 50px |id = test3 }} === With an aside === <pre> {{MessageBox |header = Header text here |type = important |text = Normal text here |aside = Aside text here |id = test4 }}</pre> Produces: {{#invoke:Mbox|main |header = Header text here |type = important |text = Normal text here |aside = Aside text here |id = test4 }} === Standard/default style === <pre> {{MessageBox |header = Header text here |text = Normal text here |comment = Comment text here |image = Wiki.png |aside = Aside text here |id = standard }}</pre> Produces: {{#invoke:Mbox|main|header=Header text here |text=Normal text here |comment=Comment text here |image=Wiki.png |aside=Aside text here |id=standard}} <includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> ca7c12cf4c7d97a6a3a96c5adc07ee3ceaf78fda Template:Dialogue/doc 10 67 132 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki {{t|Dialogue}} facilitates the writing of dialogue in a standard format. The template can handle most standard formats of writing dialogue, and can be indented, bulleted or numbered. '''This template ''cannot'' be <code>subst:</code>'d'''. This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Dialogue|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Dialogue/wikitext|Dialogue on Templates Wiki]]'''. ==Syntax== This is how to write the template in [[w:Help:wikitext|wikitext]] onto your article: <pre>{{dialogue |short=full |short=full |short=full ... |Character|Speech |Character|Speech |Character|Speech ... |cite = dialogue description }}</pre> These parameters are explained more fully below. ==Parameters== '''Named parameters specify name shortcuts. They are all optional.''' They are placed at the top of the template call, like this: <pre>{{dialogue |short=full |short=full |short=full ...</pre> Name shortcuts apply to your main dialogue text. If you use a shortcut specified here for a character name, then the full name will be replaced for it. Named parameters of the form "<code>mood1</code>", "<code>mood2</code>", "<code>mood3</code>", etc., up to "<code>mood10</code>", specify moods for the corresponding line number (e.g. "<code>mood1</code>" specifies line 1). They are placed in a line like this: <pre>... |Character|Speech|mood1=angry |Character|Speech|mood2=quiet |Character|Speech|mood3=ecstatic ...</pre> Positional parameters form the text of the dialogue (i.e. any line not containing an "<code>=</code>" will be construed as part of the dialogue. :;<code>Parameter 1</code> ''(required)'' : Character name speaking :;<code>Parameter 2</code> ''(optional)'' : Line to speak :;<code>Parameter 3</code> ''(optional)'' : Next character :;<code>Parameter 4</code> ''(optional)'' : Next line :;<code>Parameter 5</code> ''(optional)'' : Next character :;<code>Parameter 6</code> ''(optional)'' : Next line :;<code>Parameter 7</code> ''(optional)'' : so on... Note: if any character is called "<code>action</code>" then that line will be construed as an action line. It still counts as a ''line'' nonetheless. To write a dialogue description/source, use <code>cite =</code> ==Examples== Here is an example of a full template usage: <pre>{{dialogue |harry=Harry Enfield |bryan=Bryan Adams |harry|Hello! |mood1=happy |bryan|Oh hello there |mood2=surprised |harry|How are you? |mood3=inquisitive |bryan|Quite fine thank you. |mood4=reserved |harry|Oh that's spiffing. |mood5=spiffed |bryan|It is, isn't it?! |mood6=multo-spiffed |harry|Quite so. |mood7=bored |bryan|Well, I'm off! |mood8=joyous |harry|Ta-ta! |mood9=relieved |bryan|Au revoir! |mood10=sarcastic }}</pre> The above would generate: {{dialogue |harry=Harry Enfield |bryan=Bryan Adams |harry|Hello! |mood1=happy |bryan|Oh hello there |mood2=surprised |harry|How are you? |mood3=inquisitive |bryan|Quite fine thank you. |mood4=reserved |harry|Oh that's spiffing. |mood5=spiffed |bryan|It is, isn't it?! |mood6=multo-spiffed |harry|Quite so. |mood7=bored |bryan|Well, I'm off! |mood8=joyous |harry|Ta-ta! |mood9=relieved |bryan|Au revoir! |mood10=sarcastic }} The below code demonstrates examples of extended use: <pre>{{dialogue |george=Georgie Boy |rachel=Rachel |action|Enter: George and Rachel |george|Good morrow dearest Rachel!|mood2=happy |action|Rachel turns to see him |rachel|Oh, George, it's you! |george|... |rachel|Why won't you say anything?!|mood6=worried |action|Enter: Guards |Guards|We are announcing George's arrest! |rachel|Oh my!|mood9=horrified |action|George is dragged away. }}</pre> The above would generate: {{dialogue |george=Georgie Boy |rachel=Rachel |action|Enter: George and Rachel |george|Good morrow dearest Rachel!|mood2=happy |action|Rachel turns to see him |rachel|Oh, George, it's you! |george|... |rachel|Why won't you say anything?!|mood6=worried |action|Enter: Guards |Guards|We are announcing George's arrest! |rachel|Oh my!|mood9=horrified |action|George is dragged away. }} ===Notes=== You can number, bullet or indent your dialogue: <pre>:{{dialogue|Me|Hello|You|Howdido!}}</pre> :{{dialogue|Me|Hello|You|Howdido!}} <pre>#{{dialogue|Me|Hello|You|Howdido!}} #{{dialogue|Them|Good afternoon|Us|What a load of rubbish!}}</pre> #{{dialogue|Me|Hello|You|Howdido!}} #{{dialogue|Them|Good afternoon|Us|What a load of rubbish!}} <pre>*{{dialogue |angel=Fortitude |angel|I am an angel!|Crowd|We don't believe you!}} *{{dialogue |angel=Fortitude |angel|But I'm being quite serious!|Crowd|Too bad for you then!}}</pre> *{{dialogue |angel=Fortitude |angel|I am an angel!|Crowd|We don't believe you!}} *{{dialogue |angel=Fortitude |angel|But I'm being quite serious!|Crowd|Too bad for you then!}} You will get the odd spacing error (e.g. "Speech<code><nowiki><space></nowiki></code>") if you lay out your dialogue on multiple lines. <includeonly>[[Category:Quote templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 56b3a94f307db52b25c728122e451a63e806c791 Template:Namespace/doc 10 68 134 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki This is the {{t|Namespace}} meta-template. It helps other templates detect what type of page they are on. It detects and groups all the different [[Wikipedia:Namespace#Enumeration|namespaces]] used on Fandom into several types: ; main : Main (i.e. article) space, where normal articles are kept. ; talk : Any talk space, including page names that start with "Talk:", "User talk:", "File talk:", etc. ;user ;file ;mediawiki ;template ;help ;category : The remaining namespaces. ; other : Any namespaces that were not specified as a parameter to the template (see explanation below). For backwards compatibility, this template handles '''image''' as if '''file'''. '''image''' (<nowiki>[[Image:...]]</nowiki>) is now deprecated. '''Note:''' For most cases it may be better to use the simpler namespace detection templates (see the [[#See also|see also]] section below). This template is more prone to human errors such as misspelling parameter names. This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Namespace_detect|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Namespace_detect|Namespace_detect on Templates Wiki]]'''. == Usage == This template takes one or more parameters named after the different page types as listed above. Like this: <pre> {{Namespace | main = Article text | talk = Talk page text | other = Other pages text }} </pre> If the template is on a main (article) page, it will return this: : {{Namespace |demospace=main | main = Article text | talk = Talk page text | other = Other pages text }} If the template is on any other page than an article or a talk page, it will return this: : {{Namespace | main = Article text | talk = Talk page text | other = Other pages text }} The example above made the template return something for all page types. But if we don't use the '''other''' parameter or leave it empty, it will not return anything for the other page types. Like this: <pre> {{Namespace | file = File page text | category = Category page text | other = }} </pre> On any pages other than file and category pages the code above will render nothing. <!-- Do not remove this one. It is supposed to render nothing, but we have it here for testing purposes. --> : {{Namespace | file = File page text | category = Category page text | other = }} By using an empty parameter, you can make it so the template doesn't render anything for some specific page type. Like this: <pre> {{Namespace | main = | other = Other pages text }} </pre> The code above will render nothing when on mainspace (article) pages, but will return this when on other pages: : {{Namespace | main = | other = Other pages text }} == Demospace and page == For testing and demonstration purposes, this template can take two parameters named '''demospace''' and '''page'''. '''demospace''' understands any of the page type names used by this template, including the '''other''' type. It tells the template to behave like it is on some specific type of page. Like this: <pre> {{Namespace | main = Article text | other = Other pages text | demospace = main }} </pre> No matter on what kind of page the code above is used, it will return this: : {{Namespace | main = Article text | other = Other pages text | demospace = main }} The '''page''' parameter instead takes a normal pagename, making this template behave exactly as if on that page. The pagename doesn't have to be an existing page. Like this: <pre> {{Namespace | user = User page text | other = Other pages text | page = User:Example }} </pre> No matter on what kind of page the code above is used, it will return this: : {{Namespace | user = User page text | other = Other pages text | page = User:Example }} It can be convenient to let your template understand the '''demospace''' and/or '''page''' parameter and send it on to the {{T|Namespace}} template. Like this: <pre> {{Namespace | main = Article text | other = Other pages text | demospace = {{{demospace|}}} | page = {{{page|}}} }} </pre> If both the '''demospace''' and '''page''' parameters are empty or undefined, the template will detect page types as usual. == Parameters == List of all parameters: <pre> {{Namespace | main = ... | other = | demospace = {{{demospace|}}} / main / talk / user / file / mediawiki / template / help / category / other | page = {{{page|}}} / User:Example }} </pre> == Technical details == If you intend to feed tables as content to the numbered parameters of this template, you need to know this: [[w:Help:Template|Templates]] have a problem handling parameter data that contains pipes "<code>|</code>" unless the pipe is inside another template <code><nowiki>{{name|param1}}</nowiki></code> or inside a piped link <code><nowiki>[[w:Help:Template|help]]</nowiki></code>. Thus templates can not handle [[w:Help:Table|wikitables]] as input unless you escape them by using the <code><nowiki>{{!}}</nowiki></code> [[w:Help:Magic words|magic word]]. This makes it hard to use wikitables as parameters to templates. Instead, the usual solution is to use HTML wikimarkup for the table code, which is more robust. <includeonly>[[Category:General wiki templates]]{{#ifeq:{{SUBPAGENAME}}|sandbox|[[Category:Namespace manipulation templates]]}}</includeonly><noinclude>[[Category:Template documentation]]</noinclude> abd1a20286343a0c76ff9c575682bd5d011f5a6d Module:Dialogue 828 69 136 2021-08-16T20:00:48Z FANDOM 3 fixing broken help link Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Dialogue module from the [[w:c:dev:Global Lua Modules]]. local Dialogue = require('Dev:Dialogue') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Dialogue]] -- The last line produces the output for the template return Dialogue a147d7d4d5837eeb0910d21be2904bbae6658ad2 Module:Hatnote 828 70 138 2021-08-16T20:00:48Z FANDOM 3 Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Hatnote module from the [[w:c:dev:Global Lua Modules]]. local H = require('Dev:Hatnote') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Hatnote]] -- The last line produces the output for the template return H d52966e186d4771ee7844be7f402467c51644349 Module:Mbox 828 71 140 2021-08-16T20:00:48Z FANDOM 3 Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Mbox module from the [[w:c:dev:Global Lua Modules]]. local Mbox = require('Dev:Mbox') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Mbox]] -- The imported Module is overwritten locally to include default styling. -- For a more flexible Mbox experience, delete the function below and import -- https://dev.fandom.com/wiki/MediaWiki:Global_Lua_Modules/Mbox.css -- or paste (and modify as you like) its contents in your wiki's -- [[MediaWiki:Wikia.css]] (see [[w:Help:Including_additional_CSS_and_JS]]) -- or look at https://dev.fandom.com/wiki/Global_Lua_Modules/Mbox -- for more customization inspiration -- -- BEGIN DELETION HERE -- local getArgs = require('Dev:Arguments').getArgs local localCSS = mw.loadData('Module:Mbox/data').localStyle function Mbox.main(frame) local args = getArgs(frame) -- styles local styles = {} if args.bordercolor then styles['border-left-color'] = args.bordercolor elseif args.type then styles['border-left-color'] = 'var(--type-' .. args.type .. ')' end if args.bgcolor then styles['background-color'] = args.bgcolor end -- images local image = args.image or '' local imagewidth = args.imagewidth or '80px' local imagelink = '' if args.imagelink then imagelink = '|link=' .. args.imagelink end local imagewikitext = ('%sFile:%s|%s%s' .. ']]'):format('[[', image, imagewidth, imagelink) -- id for closure local id = args.id or 'mbox' local container = mw.html.create('div') :addClass('mbox') :addClass(args.class) :css(styles) :css(localCSS['mbox']) :cssText(args.style) local content = container:tag('div') :addClass('mbox__content') :css(localCSS['mbox__content']) if args.image then local image = content:tag('div') :addClass('mbox__content__image') :addClass('mw-collapsible') :attr('id', 'mw-customcollapsible-' .. id) :css(localCSS['mbox__content__image']) :wikitext(imagewikitext) if args.collapsed then image:addClass('mw-collapsed') end end local contentwrapper = content:tag('div') :addClass('mbox__content__wrapper') :css(localCSS['mbox__content__wrapper']) if args.header then contentwrapper:tag('div') :addClass('mbox__content__header') :css(localCSS['mbox__content__header']) :wikitext(args.header) end if args.text then local text = contentwrapper:tag('div') :addClass('mbox__content__text') :addClass('mw-collapsible') :attr('id', 'mw-customcollapsible-' .. id) :css(localCSS['mbox__content__text']) :wikitext(args.text) if args.collapsed then text:addClass('mw-collapsed') end if args.comment then text:tag('div') :addClass('mbox__content__text__comment') :css(localCSS['mbox__content__text__comment']) :wikitext(args.comment) end end contentwrapper:tag('span') :addClass('mbox__close') :addClass('mw-customtoggle-' .. id) :css(localCSS['mbox__close']) :attr('title', 'Dismiss') if args.aside then local aside = content:tag('div') :addClass('mbox__content__aside') :addClass('mw-collapsible') :attr('id', 'mw-customcollapsible-' .. id) :css(localCSS['mbox__content__aside']) :wikitext(args.aside) if args.collapsed then aside:addClass('mw-collapsed') end end return container end -- -- END DELETION HERE -- -- The last line produces the output for the template return Mbox 1c196d668f9209faef3e9a78c1f082f1c8573042 Module:Mbox/data 828 72 142 2021-08-16T20:00:48Z FANDOM 3 Scribunto text/plain local localStyle = { ['mbox'] = { ['display'] = 'flex', ['position'] = 'relative', ['border'] = '1px solid #d6d6d6', ['border-left-width'] = '8px', ['border-left-color'] = '#d6d6d6', ['border-radius'] = '3px', ['margin-bottom'] = '5px', ['min-height'] = '32px' }, ['mbox__content'] = { ['display'] = 'table', ['box-sizing'] = 'border-box', ['width'] = '100%', ['padding'] = '8px 15px' }, ['mbox__content__image'] = { ['display'] = 'table-cell', ['width'] = '40px', ['height'] = '100%', ['text-align'] = 'center', ['vertical-align'] = 'middle', ['padding-right'] = '15px' }, ['mbox__content__wrapper'] = { ['display'] = 'table-cell', ['vertical-align'] = 'middle' }, ['mbox__content__header'] = { ['display'] = 'block', ['font-weight'] = 'bold' }, ['mbox__content__text'] = { ['display'] = 'block' }, ['mbox__content__text__comment'] = { ['font-size'] = 'small' }, ['mbox__content__aside'] = { ['display'] = 'table-cell', ['width'] = '100px', ['vertical-align'] = 'middle', ['text-align'] = 'center', ['padding-left'] = '15px', ['border-left'] = '1px solid #d6d6d6' }, ['mbox__close'] = { ['position'] = 'absolute', ['right'] = '0', ['top'] = '0', ['padding'] = '2px 7px', ['font-weight'] = 'bold', ['font-size'] = '16px', ['color'] = '#bbb', ['cursor'] = 'pointer', ['transition'] = 'all .15s ease-in' } } return { localStyle = localStyle } 7afdc5979e3b8bc8d21b52929058ba24c351dbdc Module:Namespace detect 828 73 144 2021-08-16T20:00:48Z FANDOM 3 fixing broken help link Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Namespace_detect module from the [[w:c:dev:Global Lua Modules]]. local NS = require('Dev:Namespace_detect') -- Local configuration can be modified in -- [[Module:Namespace detect/data]] and -- [[Module:Namespace detect/config]] -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Namespace detect]] -- The last line produces the output for the template return NS 108c1bd4f38e4a0b40b9a85178a4d68cd557cef3 Module:Namespace detect/config 828 74 146 2021-08-16T20:00:48Z FANDOM 3 fixing broken help link Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports from the [[w:c:dev:Global Lua Modules]]. local nsConfiguration = require('Dev:Namespace_detect/config') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Namespace_detect]] -- The imported Module is overwritten locally to include default configuration. -- For a more flexible experience, delete the page import -- and paste (and modify as you like) its contents into this page -- https://dev.fandom.com/wiki/Module:Namespace_detect/config -- The last line produces the output for the template return nsConfiguration 22ca76ef47387cf20b5fcc7d1f14687f0b2da915 Module:Namespace detect/data 828 75 148 2021-08-16T20:00:48Z FANDOM 3 fixing broken help link Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports from the [[w:c:dev:Global Lua Modules]]. local nsData = require('Dev:Namespace_detect/data') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Namespace_detect]] -- The imported Module is overwritten locally to include default configuration. -- For a more flexible experience, delete the page import -- and paste (and modify as you like) its contents into this page -- https://dev.fandom.com/wiki/Module:Namespace_detect/data -- The last line produces the output for the template return nsData 4056c252664c31f05a9d54c48fcd865cdf41dd9f Module:Navbox 828 76 150 2021-08-16T20:00:48Z FANDOM 3 fixed broken help link Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Navbox module from the [[w:c:dev:Global Lua Modules]]. local N = require('Dev:Navbox') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Navbox]] -- The last line produces the output for the template return N 7c5d05d6cc02dafdd64b46ca3fbdc3f808e53e5b Module:Quote 828 77 152 2021-08-16T20:00:48Z FANDOM 3 Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Quote module from the [[w:c:dev:Global Lua Modules]]. local Quote = require('Dev:Quote') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Quote]] -- The last line produces the output for the template return Quote 6918bf52f0c3bdbd83cc4611b6243a659e7d800b Category:Disambiguations 14 78 154 2021-08-16T20:00:48Z FANDOM 3 Created page with "[[Category:{{SITENAME}}]]" wikitext text/x-wiki [[Category:{{SITENAME}}]] dd8aaa34cf600c1567d240a3f4bc615164a11592 Category:Quote templates 14 79 156 2021-08-16T20:00:48Z FANDOM 3 Created page with "[[Category:Templates]]" wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Notice templates 14 80 158 2021-08-16T20:00:48Z FANDOM 3 Created page with "[[Category:Templates]]" wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Candidates for deletion 14 81 160 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ This category contains articles that have been marked as candidates for deletion with the {{T|Delete}} template. '''Administrators, before deleting these pages''' make sure you check each page's discussion page, what links to each page, and the history of each page before proceeding with the deletion. [[Category:Maintenance]] a73d7b53cf0697a0682f842f1a71aafbe127aade Template:= 10 82 162 2021-08-16T20:00:48Z FANDOM 3 Created page with "<includeonly>=</includeonly><noinclude> {{documentation}}<noinclude>" wikitext text/x-wiki <includeonly>=</includeonly><noinclude> {{documentation}}<noinclude> 8f9d55b93874a691b84a9b6acb54bc6dd01fbf39 Template:=/doc 10 83 164 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ;Description :This template is used when escaping <code>=</code> when contained in [[w:Help:Parser functions|Parser functions]]. ;This template cannot be substituted. ;Syntax :Insert this template using <code>{{t|{{=}}}}</code> <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> ce8f267527b35c852e8190c38416584783aa37ac Template:Clear 10 84 166 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki <includeonly><div style="clear:{{{1|both}}}"></div></includeonly><noinclude> {{documentation}}</noinclude> 02f4c0e17d50c41f902cad74e6d937f585ba4719 Template:Cols 10 85 168 2021-08-16T20:00:48Z FANDOM 3 Modern and supported browsers no longer need vendor-specific prefixes for column-count wikitext text/x-wiki <includeonly><div style="column-count: {{{1}}};">{{{2}}}</div></includeonly><noinclude> {{documentation}}</noinclude> 7e455c29d8571535f2a7692bcd711e2d0547441c Template:Space 10 86 170 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki <includeonly>&#32;</includeonly><noinclude> {{documentation}}</noinclude> e1c3d6d869303e7cc9d8a997c69b01995b7e4928 Template:Tocright 10 87 172 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki <includeonly><div style="float:right; clear:{{{clear|right}}}; margin-bottom:.5em; padding:.5em 0 .8em 1.4em; background:transparent; max-width:20em;">__TOC__</div></includeonly><noinclude> {{documentation}}</noinclude> e05836955bb88801d044130d69154745f45c7642 Template:Trim 10 88 174 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki <includeonly>{{#if:{{{1|}}}|{{{1}}}|}}</includeonly><noinclude> {{documentation}}</noinclude> 21c7177ac37ea769b22ca26a2493df055a56f87a Template:Cols/doc 10 89 176 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ;Description This template formats the text into the specified number of columns. ;Syntax <pre>{{cols|<# of columns>|<content>}}</pre> Especially useful to wrap long lists of items into multiple columns. <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 763fc74c9235663a500bcc69a50d425c77c16cb0 Template:Space/doc 10 90 178 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ;Description This template allows you to force a space in areas that strip whitespace. <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> e361d3f5c2ca3c7d7503d9bb0d311e9d440c3cc2 Template:Tocright/doc 10 91 180 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ;Description {{t|tocright}} forces the auto-generated Table of Contents for an article to appear floated to the right side of the page, in order to improve article layout. <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 1449f71ce473315e9f2ad72064ee5c76ed00c89d Template:Trim/doc 10 92 182 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ;Description This template trims whitespace from the beginning and end of the supplied value. It works by using the simple hack of filtering it through the <code>#if</code> parser function. ;Syntax <nowiki>{{trim| value }}</nowiki> <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> f1f126e3f6fe8474d693ec499d71a9c4067043f9 Template:Clear/doc 10 93 184 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ;Description This template allows you to clear the left side, right side, or both sides of the page. Clearing means that the content following the template will not be displayed until the existing content on the specified sides (for example, "hanging" or floating images or blocks) is displayed completely. This template is often used so that the text does not flow around unrelated images. The template adds the following code to the page: <code><nowiki><div style="clear:left/right/both;"></div></nowiki></code> (the value after <code>clear</code> depends on the parameters). This code affects elements with the CSS property <code>float</code>, including files floated to the side (for example, <code><nowiki>[[File:Image.png|right]]</nowiki></code>). ;Syntax * To clear both sides of the page, add the code {{t|Clear}}. * To clear only the left side of the page, add the code {{t|Clear|left}}. * To clear only the right side of the page, add the code {{t|Clear|right}}. You can also use {{t|-}} instead of {{t|Clear}} as a shorthand call for this template. __NOTOC__ ;Example <pre style="display:table"> === Section 1 === [[File:Example.jpg|200px|right]] Section 1 text. === Section 2 === Section 2 text. {{Clear|right}} === Section 3 === Section 3 text. </pre> This code produces the following result: ---- === Section 1 === [[File:Example.jpg|200px|right]] Section 1 text. === Section 2 === Section 2 text. {{Clear|right}} === Section 3 === Section 3 text. ---- As you can see above, the example image added in section 1 is displayed to the right and extends down through section 2, while the {{t|Clear}} template is called at the end of the second section, resulting in the example image not being next to section 3. Thus, one use of the {{t|Clear}} template is to control which elements are displayed next to which other elements. == See also == * [https://developer.mozilla.org/en-US/docs/Web/CSS/clear CSS property <code>clear</code> on MDN] * [https://developer.mozilla.org/en-US/docs/Web/CSS/float CSS property <code>float</code> on MDN] <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 23cbf4a368710af74b5a7e729c6a7205939cd5de File:Example.jpg 6 94 186 2021-08-16T20:00:48Z FANDOM 3 {{PD}} [[Category:Images]] wikitext text/x-wiki == Summary == {{PD}} [[Category:Images]] b45ad4275ad2f01c536d8fee443ea7264309586b Category:Images 14 95 188 2021-08-16T20:00:48Z FANDOM 3 Created page with "[[Category:Media]]" wikitext text/x-wiki [[Category:Media]] b141d2b9971d6efe9f59bd03449781e71411c631 Category:Media 14 96 190 2021-08-16T20:00:48Z FANDOM 3 Created page with "[[Category:{{SITENAME}}]]" wikitext text/x-wiki [[Category:{{SITENAME}}]] dd8aaa34cf600c1567d240a3f4bc615164a11592 Template:Game 10 97 192 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki <includeonly><infobox> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"> <caption source="caption"/> </image> <data source="developer"><label>Developer</label></data> <data source="publisher"><label>Publisher</label></data> <data source="engine"><label>Engine</label></data> <data source="version"><label>Version</label></data> <data source="platform"><label>Platform</label></data> <data source="releasedate"><label>Release date</label></data> <data source="genre"><label>Genre</label></data> <data source="mode"><label>Mode</label></data> <data source="rating"><label>Rating</label></data> <data source="media"><label>Media</label></data> <group collapse="open"> <header>System requirements</header> <data source="requirements"></data> </group> </infobox></includeonly><noinclude>{{Documentation}}</noinclude> 632ebe6f3e8bab75f012f57996157e6b71f04c2c Template:Game/doc 10 98 194 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre>{{Game | title = The game's name, displayed on top of the infobox | image = [e.g. "Example.jpg"] | developer = | publisher = | engine = The engine the game runs on | version = Most recently released version of the game. If your wiki does patch notes, you may wish to link to those. | platform = Platform(s) the game is available on | releasedate = When the game released | genre = Genre(s) the game is classified as | mode = Singeplayer, multiplayer, etc. | rating = ESRB / PEGI, etc. ratings | media = What media the game is available on (digital, cartridge, cd, etc.) | requirements = System requirements }}</pre> == Sample output == {{Game | title = The Game of Flower | image = Example.jpg | developer = | publisher = | engine = | version = | platform = PC | releasedate = Soon | genre = RPG | mode = Single player | rating = | media = | requirements = Cutting edge hardware }} <pre>{{Game | title = The Game of Flower | image = Example.jpg | developer = | publisher = | engine = | version = | platform = PC | releasedate = Soon | genre = RPG | mode = Single player | rating = | media = | requirements = Cutting edge hardware }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> f43ae1af35184ba75281f54d6c3683a202f5fd69 Template:LicenseBox 10 99 196 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki <includeonly><div style="border-collapse: collapse; border-color: #d6d6d6; border-radius: 3px; border-style: solid; border-left-width: 8px; border-bottom-width: 1px; border-right-width: 1px; border-top-width: 1px; display: flex; margin: 0 auto 5px auto; min-height: 32px; padding: 0.25em 0.5em; {{{style|}}}" class="article-table plainlinks {{{class|}}}"> {{#if:{{{image|}}} | <span style="padding: 2px 0px 2px 0.5em; text-align: center; width: 60px;">[[File:{{{image}}}{{!}}48px{!}}alt{{=}}]]</span>}} {{{text|''Your license text is not specified''}}} </div></includeonly><noinclude> {{documentation}}</noinclude> 069ed63c4b14e0275262b6d3e8d9e91ecba49744 Template:LicenseBox/doc 10 100 198 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki ;Description :This template is used to create the box used by the various image license templates. The default styling is currently geared to a light-themed wiki. If your wiki has a dark theme and this template is too bright relative to the other elements on your wiki, simply change the following style parameters: :<code>background-color:</code> This is the color of the background and is currently set to: <code>#fefefe</code> :<code>border-color:</code> This is the color of the borders and is currently set to: <code>#d6d6d6</code> :<code>color:</code> This is the color of the text and is currently set to: <code>#333</code> ;Syntax :Type <code>{{t|LicenseBox|text{{=}}License text}}</code> on the image information page. <includeonly>[[Category:Image license templates| ]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 9ec2738036e3818826b937975731274577856c0d Template:- 10 101 200 2021-08-16T20:00:48Z FANDOM 3 Redirected page to [[Template:Clear]] wikitext text/x-wiki #REDIRECT [[Template:Clear]] 1a2aa4a9ba7478e54a2b21cbce68887ea297ea86 Template:Stub 10 102 202 2021-08-16T20:00:48Z FANDOM 3 Created page with "{{MessageBox |header = Stub |type = stub |text = ''This article is a [[:Category:Stubs|stub]]. You can help {{SITENAME}} by [{{fullurl:{{FULLPAGENAME}}|action=edit}}..." wikitext text/x-wiki {{MessageBox |header = Stub |type = stub |text = ''This article is a [[:Category:Stubs|stub]]. You can help {{SITENAME}} by [{{fullurl:{{FULLPAGENAME}}|action=edit}} expanding it].'' |comment = |class = notice hidden plainlinks |id = stub }}<includeonly>[[Category:Stubs]]</includeonly><noinclude> {{Documentation}}</noinclude> 613ef53fa1801107adb93e3c0eb28209ba253a26 Template:Stub/doc 10 104 206 2021-08-16T20:00:48Z FANDOM 3 Created page with " ;Description :This template is used to identify a stub. Any pages using this template will be automatically placed in the [[:Category:Stubs|Stubs]] category. <includeonl..." wikitext text/x-wiki ;Description :This template is used to identify a stub. Any pages using this template will be automatically placed in the [[:Category:Stubs|Stubs]] category. <includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> fe9e5e7f5e645666194f69dc88d7d12b5429e8f8 Template:MIT 10 105 208 2021-08-16T20:00:48Z FANDOM 3 Created page with "{{LicenseBox|text=''This work is licensed under the [https://opensource.org/licenses/MIT MIT License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>Category:MIT licens..." wikitext text/x-wiki {{LicenseBox|text=''This work is licensed under the [https://opensource.org/licenses/MIT MIT License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:MIT license files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> fa53e460d1a0d2cfb9e350fa64292cc428aed859 Template:LGPL 10 106 210 2021-08-16T20:00:48Z FANDOM 3 Created page with " {{LicenseBox|text=''This work is licensed under the [https://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <incl..." wikitext text/x-wiki {{LicenseBox|text=''This work is licensed under the [https://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:LGPL files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> 066b54eb9300540d46a07b5148865821bd3b2f08 Template:GFDL 10 107 212 2021-08-16T20:00:48Z FANDOM 3 Created page with " {{LicenseBox|text=''This file is licensed under the GFDL. Permission is granted to copy, distribute and/or modify this image under the terms of the '''Wikipedia:Text of th..." wikitext text/x-wiki {{LicenseBox|text=''This file is licensed under the GFDL. Permission is granted to copy, distribute and/or modify this image under the terms of the '''[[Wikipedia:Text of the GNU Free Documentation License|GNU Free Documentation License]]''', Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:GFDL files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> b3c309cd585718bb7808409474f98a1c5ec46103 Template:MIT/doc 10 108 214 2021-08-16T20:00:48Z FANDOM 3 Created page with ";Description :This template is used to mark images using the MIT license. ;Syntax :Type <code>{{t|MIT}}</code> on the image information page. <includeonly>Category:Ima..." wikitext text/x-wiki ;Description :This template is used to mark images using the MIT license. ;Syntax :Type <code>{{t|MIT}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> f243f408a7cb3acce5635655a2648b3dcd892584 Template:LGPL/doc 10 109 216 2021-08-16T20:00:48Z FANDOM 3 Created page with ";Description :This template is used to mark images using the LGPL. ;Syntax :Type <code>{{t|LGPL}}</code> on the image information page. <includeonly>Category:Image lic..." wikitext text/x-wiki ;Description :This template is used to mark images using the LGPL. ;Syntax :Type <code>{{t|LGPL}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> a1352dd235ba24762d42130c24a5a7971e1cdd31 Template:GFDL/doc 10 110 218 2021-08-16T20:00:48Z FANDOM 3 Created page with ";Description :This template is used to mark images using the GFDL. ;Syntax :Type <code>{{t|GFDL}}</code> on the image information page. <includeonly>Category:Image lic..." wikitext text/x-wiki ;Description :This template is used to mark images using the GFDL. ;Syntax :Type <code>{{t|GFDL}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> cb8fb84dfc8e1d8b8544fdff7530dce231764a63 Template:Nolicense 10 111 220 2021-08-16T20:00:48Z FANDOM 3 Created page with "{{LicenseBox|text=''This file does not have information on its copyright status.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Unattributed files]]</includeonl..." wikitext text/x-wiki {{LicenseBox|text=''This file does not have information on its copyright status.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Unattributed files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> a99128c5d8a0cd0723b13b6d9e5fd78b18dbedec Category:Unattributed files 14 112 222 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ The files in this category do not have an appropriate license selected and are tagged with the {{t|nolicense}} template. Administrators should review files in this category and either: * Update the file page with an appropriate if one can be easily determined. * Delete the image, though it is good idea to give the uploader a chance to select a license first. [[Category:Images]] [[Category:Maintenance]] fe16ed203269a56dcbf8a76f72943484fe67047f Template:Nolicense/doc 10 113 224 2021-08-16T20:00:48Z FANDOM 3 Created page with ";Description :This template is used to mark images where the copyright status is not known. It automatically adds the images to the :Category:Unattributed files|Unattribute..." wikitext text/x-wiki ;Description :This template is used to mark images where the copyright status is not known. It automatically adds the images to the [[:Category:Unattributed files|Unattributed files]] category for later maintenance ;Syntax :Type <code>{{t|Nolicense}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 346dcb940ca838c854f75f3db5229b97cce87d40 File:Favicon.ico 6 114 226 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki == Licensing == {{CC-BY-SA}} [[Category:Wiki skin images]] 4d9dc3162be921e39ea7166659dae4b8fe461b71 Category:Hatnote templates with errors 14 115 228 2021-08-16T20:00:48Z FANDOM 3 Created page with "[[Category:Maintenance]]" wikitext text/x-wiki [[Category:Maintenance]] a106a39e26c77e7b2ec90cb83728a6446cb6a1a1 Module:Mbox/doc 828 116 230 2021-08-16T20:00:48Z FANDOM 3 getting rid of a red link for the documentation wikitext text/x-wiki This module is used by most of the basic [[:Category:Notice templates|Notice templates]] and is invoked by {{t|MessageBox}}. f4a47833d87441e40c6613bb641eb72f6207cbb1 Module:Mbox/data/doc 828 117 232 2021-08-16T20:00:48Z FANDOM 3 to get rid of a red link for documentation wikitext text/x-wiki This is a sub-module of [[Module:Mbox]] and is used to specify the CSS properties for message boxes. fcd42c844d485c7da3317a85c9521ea96145cb35 Module:Quote/doc 828 118 234 2021-08-16T20:00:48Z FANDOM 3 to get rid of the red link for the documentation wikitext text/x-wiki This module is used by most of the basic [[:Category:Quote templates|Quote templates]] and is invoked by {{t|Quote}}. 665dce984d14e47c31477a42382fecb536de1da7 Module:Dialogue/doc 828 119 236 2021-08-16T20:00:48Z FANDOM 3 getting rid of red links wikitext text/x-wiki This module is invoked by the {{t|Dialogue}} template. d22c926bd1a5c2221b42dc1a05b2326ecaaa6712 Module:Hatnote/doc 828 120 238 2021-08-16T20:00:48Z FANDOM 3 getting rid of red links wikitext text/x-wiki This module is invoked by the {{t|Hatnote}} template, which is used by a number of [[:Category:Notice templates|Notice templates]]. b5c1fc43f0f6bd96416f2fec21a7da0b34ae8aac Module:Navbox/doc 828 121 240 2021-08-16T20:00:48Z FANDOM 3 getting rid of red links wikitext text/x-wiki This module is invoked by the {{t|Navbox}} template. Navbox templates are not displayed for mobile users. 23d4ed4b22c8bf7316431e1f6df6d4d5d9de1ef5 Module:Namespace detect/doc 828 122 242 2021-08-16T20:00:48Z FANDOM 3 getting rid of red links wikitext text/x-wiki This module is invoked by the {{t|Namespace}} template. 157d889ae2f345f719a68f459ee2ca550d14afb5 Module:Namespace detect/data/doc 828 123 244 2021-08-16T20:00:48Z FANDOM 3 Created page with "This module holds data for [[Module:Namespace detect]] to be loaded per page, rather than per #invoke, for performance reasons." wikitext text/x-wiki This module holds data for [[Module:Namespace detect]] to be loaded per page, rather than per #invoke, for performance reasons. 4b5f88c95a81f026633adaae2556eeaa2896fd6f Module:Namespace detect/config/doc 828 124 246 2021-08-16T20:00:48Z FANDOM 3 Created page with "This module stores configuration data for Module:Namespace detect. Here you can localise the module to your wiki's language. To activate a configuration item, you need to u..." wikitext text/x-wiki This module stores configuration data for Module:Namespace detect. Here you can localise the module to your wiki's language. To activate a configuration item, you need to uncomment it. This means that you need to remove the text "-- " at the start of the line. 5b3ec654956a66588b67fedc310584e2769e6f5c Template:Series 10 125 248 2021-08-16T20:00:48Z FANDOM 3 Created page with "<includeonly><infobox> <title source="title"><default>'' {{#explode:{{PAGENAME}}|(}} ''</default></title> <image source="image"><caption source="caption" /></image> <dat..." wikitext text/x-wiki <includeonly><infobox> <title source="title"><default>'' {{#explode:{{PAGENAME}}|(}} ''</default></title> <image source="image"><caption source="caption" /></image> <data source="release"><label>First released</label></data> <data source="seasons"><label>Seasons</label></data> <data source="episodes"><label>Episodes</label></data> <data source="runtime"><label>Run time</label></data> <data source="genre"><label>Genre</label></data> <data source="network"><label>Network</label></data> <data source="distrib"><label>Distributor</label></data> <data source="creator"><label>Created by</label></data> <data source="writer"><label>Written by</label></data> <data source="director"><label>Directed by</label></data> <data source="composer"><label>Composer</label></data> <data source="based on"><label>Based on</label></data> <data source="exec prod"><label>Executive producer</label></data> <data source="producer"><label>Producer</label></data> <data source="prod co"><label>Production company</label></data> <data source="country"><label>Country</label></data> <data source="language"><label>Language</label></data> </infobox></includeonly><noinclude>{{documentation}}</noinclude> f2e00daecd3f3df5c31267e0a9ffd721ac2f186d Template:Series/doc 10 126 250 2021-08-16T20:00:48Z FANDOM 3 Created page with "== Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobo..." wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Series | title = | image = | caption = | release = | seasons = | episodes = | runtime = | genre = | network = | distrib = | creator = | writer = | director = | composer = | based on = | exec prod = | producer = | prod co = | country = | language = }}</pre> == Sample output == {{Series | title = ''Default page title'' | image = Wiki.png | caption = Test | release = Test | seasons = Test | episodes = Test | runtime = Test | genre = Test | network = Test | distrib = Test | creator = Test | writer = Test | director = Test | composer = Test | based on = Test | exec prod = Test | producer = Test | prod co = Test | country = Test | language = Test }} <pre>{{Series | title = ''Default page title'' | image = Wiki.png | caption = Test | release = Test | seasons = Test | episodes = Test | runtime = Test | genre = Test | network = Test | distrib = Test | creator = Test | writer = Test | director = Test | composer = Test | based on = Test | exec prod = Test | producer = Test | prod co = Test | country = Test | language = Test }}</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 7f9a7daecb805234290cd4addefc0c049fe125ce Template:Film 10 127 252 2021-08-16T20:00:48Z FANDOM 3 Created page with "<includeonly><infobox> <title source="title"><default>'' {{#explode:{{PAGENAME}}|(}} ''</default></title> <image source="image"><caption source="caption"/></image> <g..." wikitext text/x-wiki <includeonly><infobox> <title source="title"><default>'' {{#explode:{{PAGENAME}}|(}} ''</default></title> <image source="image"><caption source="caption"/></image> <group> <data source="premiere"><label>Premiere date</label></data> <data source="genre"><label>Genre</label></data> <data source="rating"><label>Rating</label></data> <data source="runtime"><label>Runtime</label></data> <data source="director"><label>Directed by</label></data> <data source="writer"><label>Written by</label></data> <data source="music"><label>Music by</label></data> <data source="producer"><label>Produced by</label></data> <data source="budget"><label>Budget</label></data> <data source="earned"><label>Box Office</label></data> </group> <group layout="horizontal"> <header>Series</header> <data source="previous"><label>← Previous</label></data> <data source="next"><label>Next →</label></data> </group> </infobox>{{Namespace|main=[[Category:Films]]}}</includeonly><noinclude>{{documentation}}</noinclude> 92b5337f22ec52309cba873beaf3cdb11d2f64e0 Template:Film/doc 10 128 254 2021-08-16T20:00:48Z FANDOM 3 Created page with "== Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobo..." wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Film | title = | image = | caption = | premiere = | genre = | rating = | runtime = | director = | writer = | music = | producer = | budget = | earned = | previous = | next = }} </pre> == Sample output == {{Film | title = This is a test | image = Wiki.png | caption = This is a test | premiere = This is a test | genre = This is a test | rating = This is a test | runtime = This is a test | director = This is a test | writer = This is a test | music = This is a test | producer = This is a test | budget = This is a test | earned = This is a test | previous = This is a test | next = This is a test }} <pre> {{Film | title = This is a test | image = Wiki.png | caption = This is a test | premiere = This is a test | genre = This is a test | rating = This is a test | runtime = This is a test | director = This is a test | writer = This is a test | music = This is a test | producer = This is a test | budget = This is a test | earned = This is a test | previous = This is a test | next = This is a test }} }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> b085f97e35a2ac96b5ddf92a22e98fbd93933736 Template:Season 10 129 256 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki <includeonly><infobox type="Season"> <title source="title"><default>{{PAGENAME}}</default></title> <image source="image"><caption source="caption"/></image> <data source="season"><label>Season</label></data> <data source="episodes"><label>Episodes</label></data> <data source="premiere"><label>Premiered</label></data> <group layout="horizontal"> <header>Navigation</header> <data source="previous"><label>← Previous</label></data> <data source="next"><label>Next →</label></data> </group> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Seasons]]}}</includeonly><noinclude>{{documentation}}</noinclude> 2e09c5f43c99d98363971b63ad639874c5e6c452 Template:Season/doc 10 130 258 2021-08-16T20:00:48Z FANDOM 3 Created page with "== Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobo..." wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Season | title = | image = | caption = | season = | episodes = | premiere = | previous = | next = }} </pre> == Sample output == {{Season | title = This is a test | image = Wiki.png | caption = This is a test | season = This is a test | episodes = This is a test | premiere = This is a test | previous = This is a test | next = This is a test }} <pre> {{Season | title = This is a test | image = Wiki.png | caption = This is a test | season = This is a test | episodes = This is a test | premiere = This is a test | previous = This is a test | next = This is a test }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> b3f82f2223cf6f8323820bce6de5427e4b6a1380 Template:Cast 10 131 260 2021-08-16T20:00:48Z FANDOM 3 Created page with "<includeonly><infobox> <title source="name"><default>{{PAGENAME}}</default></title> <image source="image"><caption source="caption" /></image> <data><label>Born..." wikitext text/x-wiki <includeonly><infobox> <title source="name"><default>{{PAGENAME}}</default></title> <image source="image"><caption source="caption" /></image> <data><label>Born</label> <default>{{#if: {{{birthname|}}} | {{{birthname|}}} }}{{#if: {{{birthdate|}}} | {{#if: {{{birthname|}}} | <br />}}{{{birthdate|}}}{{#if: {{{birthplace|}}} | <br />}} }}{{#if: {{{birthplace|}}} | {{#if: {{{birthdate|}}} || {{#if: {{{birthname|}}}|<br />}} }}{{{birthplace|}}} }}</default> </data> <data><label>Died</label> <default>{{#if: {{{deathdate|}}} | {{{deathdate|}}} }}{{#if: {{{deathplace|}}} | {{#if: {{{deathdate|}}} | <br />}}{{{deathplace|}}} }}</default> </data> <data source="gender"><label>Gender</label></data> <data source="height"><label>Height</label></data> <data source="occupation"><label>Occupation</label></data> <data source="appears in"><label>Appears in</label></data> <data source="portrays"><label>Portrays</label></data> </infobox>{{Namespace|main=[[Category:Cast]]<!-- -->{{#if: {{#pos:{{{appears in|}}} | TITLE}} | [[Category:TITLE cast]] }}<!-- -->}}</includeonly><noinclude>{{documentation}}</noinclude> b1e4767be7d53e599ae3ac18e9f41dff90fdfe89 Template:Cast/doc 10 132 262 2021-08-16T20:00:48Z FANDOM 3 Created page with "== Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobo..." wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Cast | name = | image = | caption = | birthname = | birthdate = | birthplace = | deathdate = | deathplace = | gender = | height = | occupation = | appears in = | portrays = }} </pre> == Sample output == {{Cast | name = Test | image = Wiki.png | caption = Test | birthname = Name | birthdate = Date | birthplace = Place | deathdate = Date | deathplace = Place | gender = Test | height = Test | occupation = Test | appears in = Test | portrays = Test }} <pre> {{Cast | name = Test | image = Wiki.png | caption = Test | birthname = Name | birthdate = Date | birthplace = Place | deathdate = Date | deathplace = Place | gender = Test | height = Test | occupation = Test | appears in = Test | portrays = Test }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> fea3e74e01ad2f66bb54f921f82426cb1a7fa748 Template:Cite web 10 133 264 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki <includeonly>{{ #if: {{#if: {{{url|}}} | {{#if: {{{title|}}} |1}}}} ||Error on call to [[Template:cite web]]: Parameters '''url''' and '''title''' must be specified }}{{ #if: {{{archiveurl|}}}{{{archivedate|}}} | {{#if: {{#if: {{{archiveurl|}}}| {{#if: {{{archivedate|}}} |1}}}} ||Error on call to [[template:cite web]]: Parameters '''archiveurl''' and '''archivedate''' must be both specified or both omitted }} }}{{#if: {{{author|}}}{{{last|}}} | {{#if: {{{authorlink|}}} | [[{{{authorlink}}}|{{#if: {{{last|}}} | {{{last}}}{{#if: {{{first|}}} | , {{{first}}} }} | {{{author}}} }}]] | {{#if: {{{last|}}} | {{{last}}}{{#if: {{{first|}}} | , {{{first}}} }} | {{{author}}} }} }} }}{{#if: {{{author|}}}{{{last|}}} | {{#if: {{{coauthors|}}}| <nowiki>;</nowiki>&#32;{{{coauthors}}} }} }}{{#if: {{{author|}}}{{{last|}}}| {{#if: {{{date|}}} | &#32;({{{date}}}) | {{#if: {{{year|}}} | {{#if: {{{month|}}} | &#32;({{{month}}} {{{year}}}) | &#32;({{{year}}}) }} }} |}} }}{{#if: {{{last|}}}{{{author|}}} | .&#32;}}{{ #if: {{{editor|}}} | &#32;{{{editor}}}: }}{{#if: {{{archiveurl|}}} | {{#if: {{{archiveurl|}}} | {{#if: {{{title|}}} | [{{{archiveurl}}} {{{title}}}] }}}} | {{#if: {{{url|}}} | {{#if: {{{title|}}} | [{{{url}}} {{{title}}}] }}}} }}{{#if: {{{language|}}} | &#32;<span style="font-size: 0.95em; font-weight: bold; color:#555; position: relative;">({{{language}}})</span> }}{{#if: {{{format|}}} | &#32;({{{format|}}}) }}{{#if: {{{work|}}} | .&#32;''{{{work}}}'' }}{{#if: {{{pages|}}} | &#32;{{{pages}}} }}{{#if: {{{publisher|}}} | .&#32;{{{publisher}}}{{#if: {{{author|}}}{{{last|}}} | | {{#if: {{{date|}}}{{{year|}}}{{{month|}}} || }} }} }}{{#if: {{{author|}}}{{{last|}}} ||{{#if: {{{date|}}} | &#32;({{{date}}}) | {{#if: {{{year|}}} | {{#if: {{{month|}}} | &#32;({{{month}}} {{{year}}}) | &#32;({{{year}}}) }} }} }} }}.{{#if: {{{archivedate|}}} | &#32;Archived from [{{{url}}} the original] on {{#time:F j, Y|{{{archivedate}}}}}{{#if: {{{archiveyear|}}} | , {{{archiveyear}}} }}. }}{{#if: {{{accessdate|}}} | &#32;Retrieved on {{#time:F j, Y|{{{accessdate}}}}}{{#if: {{{accessyear|}}} | , {{{accessyear}}} }}. }}{{#if: {{{accessmonthday|}}} | &#32;Retrieved on {{{accessmonthday}}}, {{{accessyear}}}. }}{{#if: {{{accessdaymonth|}}} | &#32;Retrieved on {{{accessdaymonth}}} {{{accessyear}}}. }}{{#if: {{{quote|}}} | &nbsp;“{{{quote}}}” }}</includeonly><noinclude>{{documentation}} </noinclude> 06085b03744dda1cb654deed7c8e92495d7593a6 Template:Cite web/doc 10 134 266 2021-08-16T20:00:48Z FANDOM 3 Created page with "__NOTOC__ This template is used to [[Wikipedia:WP:CITE|cite sources]] in Wikipedia. It is specifically for web sites which are not news sources. This template replaces deprec..." wikitext text/x-wiki __NOTOC__ This template is used to [[Wikipedia:WP:CITE|cite sources]] in Wikipedia. It is specifically for web sites which are not news sources. This template replaces deprecated [[Wikipedia:Template:Teb reference|template:web reference]]. It provides lower case parameters only. A general discussion of the use of templates for adding citation of open-source web content to Wikipedia articles is available at [[Wikipedia:Citation templates|citation templates]]. This page uses [[w:Wikia:Licensing|Creative Commons Licensed]] content from [[w:c:Wookieepedia:Template:Cite web|Wookieepedia]] == Usage == ;Common form for cases where little is known about authorship of the page (with current date) <tt><nowiki>{{Cite web |url= |title= |accessdate=</nowiki>{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}<nowiki> |format= |work= }}</nowiki></tt> ;Using last, first (with current date) <tt><nowiki>{{Cite web |url= |title= |accessdate=</nowiki>{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}<nowiki> |last= |first= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt> ;Using author (with current date) <tt><nowiki>{{Cite web |url= |title= |accessdate=</nowiki>{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}<nowiki> |author= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt> ;Using non-linked retrieved date, last, first <tt><nowiki>{{Cite web |url= |title= |accessmonthday= |accessyear= |last= |first= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt> ;Using non-linked retrieved date, author <tt><nowiki>{{Cite web |url= |title= |accessmonthday= |accessyear= |author= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt> ;All parameters, horizontal format (delete the ones you don't need) <tt><nowiki>{{Cite web |url= |title= |accessdate= |accessmonthday= |accessdaymonth = |accessyear= |author= |last= |first= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt> ;All parameters, vertical format <pre>{{Cite web | url = | title = | accessdate = | accessdaymonth = | accessmonthday = | accessyear = | author = | last = | first = | authorlink = | coauthors = | date = | year = | month = | format = | work = | publisher = | pages = | language = | archiveurl = | archivedate = | quote = }}</pre> === Required parameters === * '''url''': URL of online item. * '''title''': Title of online item. ''For producing a [[Wikipedia:WP:CONTEXT#Dates|wikilinked date]] of retrieval:'' :* '''accessdate''': Full date when item was accessed, in [[Wikipedia:ISO 8601|ISO 8601]] YYYY-MM-DD format, for example "accessdate = {{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}". ''Must not be wikilinked'' ''For producing a non-wikilinked date of retrieval:'' :* '''accessmonthday''' and '''accessyear''': Month and day when item was accessed, for example "accessmonthday = May 10", <u>and</u> year when item was accessed, for example "accessyear = 2005". Produces: ''Retrieved on May 10, 2006.'' :* '''accessdaymonth''' and '''accessyear''': Month and day when item was accessed, for example "accessmonthday = 10 May", <u>and</u> year when item was accessed, for example "accessyear = 2005". Produces: ''Retrieved on 10 May 2006.'' === Optional parameters === * '''author''': Author ** '''last''' works with '''first''' to produce <code>last, first</code> ** '''authorlink''' works either with '''author''' or with '''last''' & '''first''' to link to the appropriate wikipedia article. Does not work with URLs. ** '''coauthors''': allows additional authors * '''date''': Full date of publication, preferably in [[Wikipedia:ISO 8601|ISO 8601]] YYYY-MM-DD format, e.g. ''2006-02-17''. May be wikilinked. ** OR: '''year''': Year of publication, and '''month''': Name of the month of publication. If you also have the day, use ''date'' instead. Must not be wikilinked. * '''format''': Format, e.g. PDF. HTML implied if not specified. * '''work''': If this item is part of a larger work, name of that work. * '''publisher''': Publisher, if any. * '''pages''': ''pp. 5–7'': first page and optional last page. This is for listing the pages relevant to the citation, not the total number of pages in the book. This is especially useful for PDF format, where the page can be linked to with the <code>#page=''number''</code> anchor tagged on the end of the URL: *: <code><nowiki>pages = [http://www.example.org/file.pdf#page=123 p. 123]</nowiki></code> * '''language''': language of publication (don't specify "English" as this is the default). * '''archiveurl''': URL of the archive location of the item (requires '''archivedate''') * '''archivedate''': Date when the item was archived (requires '''archiveurl'''), in [[Wikipedia:ISO 8601|ISO 8601]] YYYY-MM-DD format, e.g. ''2006-02-17''. Must not be wikilinked; it will be linked automatically. * '''quote''': Relevant quote from online item. == Examples == ;Some standard use cases * <nowiki>{{Cite web | author=Doe, John | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org | accessdate=2005-07-06 }}</span> * <nowiki>{{Cite web | author=Doe, John | title=My Favorite Things Part II | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org | accessdate=2005-07-06 }}</span> * <nowiki>{{Cite web | author=Doe, John | title=My Favorite Things Part II | date=2005-04-30 | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | date=2005-04-30 | url=http://www.example.org | accessdate=2005-07-06}}</span> * <nowiki>{{Cite web | author=Doe, John | title=My Favorite Things Part II | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | url=http://www.example.org | accessdate=2005-07-06}}</span> * <nowiki>{{Cite web | title=My Favorite Things Part II | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | url=http://www.example.org | accessdate=2005-07-06}}</span> * <nowiki>{{Cite web | url=http://www.nfl.com/fans/ | title=Digest of Rules | publisher= National Football League | accessdate=2005-07-06 }}</nowiki><br>→ <span style="background:white">{{cite web | url=http://www.nfl.com/fans/ | title=Digest of Rules | publisher= National Football League | accessdate=2005-07-06 }}</span> ;Non-linking date of retrieval (using accessmonthday and accessyear) * <nowiki>{{Cite web | title=My Favorite Things Part II | work=Encyclopedia of Things | url=http://www.example.org/ | accessmonthday=July 6 | accessyear=2005 }}</nowiki><br/> → <span style="background:white">{{cite web | title=My Favorite Things Part II | work=Encyclopedia of Things | url=http://www.example.org/ | accessmonthday=July 6 | accessyear=2005 }}</span> ;Using format * <nowiki>{{Cite web | title=List of psychotropic substances under international control | publisher = International Narcotics Control Board | url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06 }}</nowiki><br/> → <span style="background:white">{{cite web | title=List of psychotropic substances under international control | publisher = International Narcotics Control Board | url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06}}</span> ;language * <nowiki>{{Cite web | author=Joliet, François | title=Honnit soit qui mal y pense | date=2005-04-30 | url=http://www.example.org/ | accessdate=2005-07-06 | language=French }}</nowiki><br/>→ <span style="background:white">{{cite web | author=Joliet, François | title=Honnit soit qui mal y pense | date=2005-04-30 | url=http://www.example.org | accessdate=2005-07-06 | language=French}}</span> ;coauthors * <nowiki>{{Cite web | first=John | last=Doe | coauthors=Peter Smith, Jim Smythe | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16 }}</nowiki><br/>→ <span style="background:white">{{cite web | first=John | last=Doe | coauthors=Peter Smith, Jim Smythe | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16 }}</span> ;No author * <nowiki>{{Cite web | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16 }}</nowiki><br/>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16 }}</span> ;No author, no publisher * <nowiki>{{Cite web | title=My Favorite Things Part II | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki></br>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2005-07-06 }}</span> * <nowiki>{{Cite web | title=My Favorite Things Part II | date=2005-04-30 | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | date=2005-04-30 | url=http://www.example.org/ | accessdate=2005-07-06 }}</span> * <nowiki>{{Cite web | title=List of psychotropic substances under international control | date=2005-04-30 | url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06 | language=Greek }}</nowiki><br/> → <span style="background:white">{{cite web | title=List of psychotropic substances under international control | date=2005-04-30 | url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06 | language=Greek }}</span> ; Using archiveurl and archivedate to refer to items that went away but are available from an archive site * <nowiki>{{Cite web | title=List of psychotropic substances under international control | date=2005-04-30 | url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06 | archiveurl=http://www.archive.org/2005-09-11/www.incb.org/pdf/e/list/green.pdf | archivedate=2005-09-11 }}</nowiki><br/> → <span style="background:white">{{cite web | title=List of psychotropic substances under international control | date=2005-04-30 | url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06 | archiveurl=http://www.archive.org/2005-09-11/www.incb.org/pdf/e/list/green.pdf | archivedate=2005-09-11 }}</span> * <nowiki> {{Cite web |url=http://joanjettbadrep.com/cgi-bin/fullStory.cgi?archive=currnews&story=20060405-01shore.htm |title=Interview with Maggie Downs |date=2006-03-31 |publisher=The Desert Sun |archiveurl=http://72.14.207.104/search?q=cache:JAxf4v-pQmgJ:joanjettbadrep.com/cgi-bin/fullStory.cgi%3Farchive%3Dcurrnews%26story%3D20060405-01shore.htm |archivedate=2006-04-26 }}</nowiki><br/> → <span style="background:white">{{cite web |url=http://joanjettbadrep.com/cgi-bin/fullStory.cgi?archive=currnews&story=20060405-01shore.htm |title=Interview with Maggie Downs |date=2006-03-31 |publisher=The Desert Sun |archiveurl=http://72.14.207.104/search?q=cache:JAxf4v-pQmgJ:joanjettbadrep.com/cgi-bin/fullStory.cgi%3Farchive%3Dcurrnews%26story%3D20060405-01shore.htm |archivedate=2006-04-26}}</span> ; Using quote * <nowiki>{{Cite web | title = My Favorite Things Part II | work = Encyclopedia of Things | url = http://www.example.org/ | accessdate = 2005-07-06 | quote = Lorem ipsum dolor. }}</nowiki><br/>→ <span style="background:white">{{cite web | title = My Favorite Things Part II | work = Encyclopedia of Things | url = http://www.example.org/ | accessdate = 2005-07-06 | quote = Lorem ipsum dolor. }}</span> ;No parameters (error) * <nowiki>{{Cite web}}</nowiki><br/>→ <span style="background:white">{{cite web}}</span> <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 49566b6a3601a57e7e4d3521179ec7d3300ec2a1 VAST SPACE ARCHIVES: Beeleth Wiki:Wiki rules 4 135 268 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki Below is a suggested set of rules to follow when editing this wiki. Administrators of this wiki should read these rules and adapt them as necessary. # '''Keep it civil''': Do not make personal attacks on other people. If you need to criticize another user’s argument, do so without attacking them as a person. Do not use bigoted language, including slurs which degrade another person or group of people based on gender, race, sexual orientation, nationality, religion, etc. # '''Be a productive member of the wiki''': Contribute to the wiki in line with the established processes and conventions. Need help? Ask an [[Special:ListUsers/sysop|administrator]]! Disrupting the wiki with “edit warring” over differing opinions of a topic with another user or group of users is not productive. # '''Do not engage in excessive self-promotion''': The wiki is a collaborative community resource for the topic at hand. It is NOT a free place to advertise your related website, YouTube channel, blog, social media account, etc. Have a question about whether your link would be welcome? Ask an administrator! # '''Do not harass other users''': If somebody asks you to stop posting certain content on their wall, respect their wishes. It is their wall. # '''Do follow community guidelines for formatting''': When a community has established formatting, it’s important to adhere to that, especially when spoiler content is involved. [[Category:{{SITENAME}}]] efad0088b04516c5e666314530cc43875a74fd71 Blog:Recent posts 0 136 270 2021-08-16T20:00:48Z FANDOM 3 Created article for recent blog posts wikitext text/x-wiki <bloglist summary="true" count=50><title>⧼create-blog-post-recent-listing-title ⧽</title><type>plain</type><order>date</order></bloglist> afb902f1d8c2d7adccbdd48b1fbd4a0cc5361783 Category:Blog posts 14 137 272 2021-08-16T20:00:48Z FANDOM 3 wikitext text/x-wiki This is an automatically generated list of blog posts [[Category:Community]] 864f70c2af84fd84c1901d154b90eb4facc9f37c Category:Community 14 138 274 2021-08-16T20:00:48Z FANDOM 3 Created page with "[[Category:{{SITENAME}}]]" wikitext text/x-wiki [[Category:{{SITENAME}}]] dd8aaa34cf600c1567d240a3f4bc615164a11592 Category:Pages with broken file links 14 139 276 2021-08-16T20:00:48Z FANDOM 3 Created page with "[[Category:Maintenance]]" wikitext text/x-wiki [[Category:Maintenance]] a106a39e26c77e7b2ec90cb83728a6446cb6a1a1 Category:Videos 14 140 278 2021-08-16T20:00:48Z FANDOM 3 Created page with "[[Category:Media]]" wikitext text/x-wiki [[Category:Media]] b141d2b9971d6efe9f59bd03449781e71411c631 Category:Screenshots 14 141 280 2021-08-16T20:00:48Z FANDOM 3 Created page with "[[Category:Images]]" wikitext text/x-wiki [[Category:Images]] 8820b63e35aedd9d2666fe40b965d4e91ce0a106 Category:Wiki skin images 14 142 282 2021-08-16T20:00:48Z FANDOM 3 Created page with "[[Category:Images]]" wikitext text/x-wiki [[Category:Images]] 8820b63e35aedd9d2666fe40b965d4e91ce0a106 MediaWiki:Mainpage 8 143 284 2021-08-16T20:00:48Z FANDOM 3 SEO wikitext text/x-wiki BEELETH Wiki 788e216c683159d2e7fb2731fdbe1c0517dc9321 Main Page 0 1 286 2021-08-16T20:00:48Z FANDOM 3 FANDOM moved page [[Main Page]] to [[BEELETH Wiki]]: SEO wikitext text/x-wiki #REDIRECT [[BEELETH Wiki]] ee117f54bffab5d46c550eaaf8e853fc6a9b1851 File:Site-background-dark 6 144 288 2021-08-16T21:03:25Z beeleth>Beeleth 0 Beeleth uploaded a new version of [[File:Site-background-dark]] wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Site-logo.png 6 146 292 2021-08-16T21:03:27Z beeleth>Beeleth 0 Protected "[[File:Site-logo.png]]": Theme designer protected image ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Site-favicon.ico 6 147 294 2021-08-16T21:03:27Z beeleth>Beeleth 0 Protected "[[File:Site-favicon.ico]]": Theme designer protected image ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:RealBEELETH.jpg 6 150 300 2021-08-16T21:40:19Z beeleth>Beeleth 0 REAL????? wikitext text/x-wiki == Summary == REAL????? == Licensing == {{Self}} 9a923cc36699a221e4f3d827d811d18c0d13ba52 File:Mephistopheles.png 6 151 302 2021-08-16T22:15:19Z beeleth>Beeleth 0 Mephistopheles' pose. wikitext text/x-wiki == Summary == Mephistopheles' pose. == Licensing == {{Self}} 5478da25c043ac3e9f6284da73e6d5473627463f File:Beeleth.png 6 152 304 2021-08-16T22:16:06Z beeleth>Beeleth 0 Beeleth's pose. wikitext text/x-wiki == Summary == Beeleth's pose. == Licensing == {{Self}} 1dfbad80f58f8978af6540f16a2c0db8cfe711c8 Lucifer the Morning Star 0 154 308 2021-08-16T23:50:59Z beeleth>Beeleth 0 Redirected page to [[Emperor Satan]] wikitext text/x-wiki #REDIRECT [[Emperor Satan]] 6be8eff933204ba1a16a150b699f234f34125df0 Satan 0 155 310 2021-08-16T23:51:28Z beeleth>Beeleth 0 Redirected page to [[Emperor Satan]] wikitext text/x-wiki #REDIRECT [[Emperor Satan]] 6be8eff933204ba1a16a150b699f234f34125df0 Lucifer 0 157 314 2021-08-16T23:53:02Z beeleth>Beeleth 0 Redirected page to [[Emperor Satan]] wikitext text/x-wiki #REDIRECT [[Emperor Satan]] 6be8eff933204ba1a16a150b699f234f34125df0 Template:General Location 10 159 318 2021-08-17T00:41:12Z beeleth>Beeleth 0 Created page with "<infobox> <title source="title1"/> <image source="image1"> <caption source="caption1"/> </image> <data source="universe"> <label>Universe</label> </data> <..." wikitext text/x-wiki <infobox> <title source="title1"/> <image source="image1"> <caption source="caption1"/> </image> <data source="universe"> <label>Universe</label> </data> <data source="location"> <label>Location</label> </data> <data source="capital"> <label>Capital</label> </data> <data source="sector"> <label>Sector</label> </data> <group> <header>In-Universe</header> <data source="founder"> <label>Founder</label> </data> <data source="leader"> <label>Leader</label> </data> <data source="creation"> <label>Creation</label> </data> <data source="population"> <label>Population</label> </data> <data source="notable_people"> <label>Notable People</label> </data> </group> </infobox> <noinclude> Example usage: <pre> {{General Location | title1=Example | image1=Example | caption1=Example | universe=Example | location=Example | capital=Example | sector=Example | founder=Example | leader=Example | creation=Example | population=Example | notable_people=Example }} </pre> <templatedata> {"params":{"title1":{"suggested":true},"image1":{"suggested":true},"caption1":{"suggested":true},"universe":{"suggested":true},"location":{"suggested":true},"capital":{"suggested":true},"sector":{"suggested":true},"founder":{"suggested":true},"leader":{"suggested":true},"creation":{"suggested":true},"population":{"suggested":true},"notable_people":{"suggested":true}},"sets":[],"maps":{}} </templatedata> </noinclude> 89aa34d77ed89da199f5ef3dc305d38ed3c7f064 Cuperosa the Star-Crossed 0 160 320 2021-08-17T16:01:02Z beeleth>Beeleth 0 Redirected page to [[King Beeleth]] wikitext text/x-wiki #REDIRECT [[King Beeleth]] 9bfa365dd4a5e6fe3d7ed91e668364015e9141e2 Cuperosa 0 161 322 2021-08-17T16:01:26Z beeleth>Beeleth 0 Redirected page to [[King Beeleth]] wikitext text/x-wiki #REDIRECT [[King Beeleth]] 9bfa365dd4a5e6fe3d7ed91e668364015e9141e2 Template:General Plot 10 162 324 2021-08-17T16:05:59Z beeleth>Beeleth 0 Created page with "<infobox> <title source="title1"/> <image source="image1"> <caption source="caption1"/> </image> <data source="universe"> <label>Universe</label> </data> <..." wikitext text/x-wiki <infobox> <title source="title1"/> <image source="image1"> <caption source="caption1"/> </image> <data source="universe"> <label>Universe</label> </data> <data source="space"> <label>Space</label> </data> <data source="activity_history"> <label>Activity History</label> </data> <group> <header>In-Universe</header> <data source="setting"> <label>Setting</label> </data> <data source="locations"> <label>Locations</label> </data> <data source="condition"> <label>Condition</label> </data> </group> </infobox> <noinclude> Example usage: <pre> {{General Plot | title1=Example | image1=Example | caption1=Example | universe=Example | space=Example | activity_history=Example | setting=Example | locations=Example | condition=Example }} </pre> <templatedata> {"params":{"title1":{"suggested":true},"image1":{"suggested":true},"caption1":{"suggested":true},"universe":{"suggested":true},"space":{"suggested":true},"activity_history":{"suggested":true},"setting":{"suggested":true},"locations":{"suggested":true},"condition":{"suggested":true}},"sets":[],"maps":{}} </templatedata> </noinclude> 1ee5e1516ab0662aefe3461800f1225b7fe04f45 File:Site-background-light 6 145 290 2021-08-17T23:22:48Z beeleth>Beeleth 0 Beeleth uploaded a new version of [[File:Site-background-light]] wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Template:Template parameter usage 10 221 441 2021-08-21T18:02:56Z beeleth>SUM1 0 Added missing "lc" parameters; added optional "based" parameter to add text "based on this[/its] TemplateData" at end of template wikitext text/x-wiki {{#switch:{{{label|}}} |=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|C|c}}lick here] to see a monthly parameter usage report for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|this template}}{{#ifeq:{{yesno-no|{{{based}}}}}|yes|&#32;based on {{#if:{{{1|}}}|its|this}} TemplateData}}. |None|none=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|P|p}}arameter usage report]{{#ifeq:{{yesno-no|{{{based}}}}}|yes|&#32;based on {{#if:{{{1|}}}|its|this}} TemplateData}} |for|For=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|P|p}}arameter usage report] for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|[[Template:{{ROOTPAGENAME}}]]}}{{#ifeq:{{yesno-no|{{{based}}}}}|yes|&#32;based on {{#if:{{{1|}}}|its|this}} TemplateData}}. |#default=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{{label|}}}]{{#ifeq:{{yesno-no|{{{based}}}}}|yes|&#32;based on {{#if:{{{1|}}}|its|this}} TemplateData}} }}<noinclude> {{documentation}} </noinclude> b9cdd1b2e409313904f041c38562a3d6221cc017 Template:TemplateData header 10 220 439 2021-08-29T21:32:29Z beeleth>SUM1 0 Added "based" parameter to other transclusion wikitext text/x-wiki <div class="templatedata-header">{{#if:{{{noheader|}}}|<!-- noheader: -->{{Template parameter usage|based=y}}|<!-- +header: -->This is the {{#if:{{{nolink|}}}|<!-- +header, nolink TD -->TemplateData|<!-- +header, +link [[TD]]; DEFAULT: -->[[Wikipedia:TemplateData|TemplateData]]}}<!-- e.o. #if:nolink; DEFAULT: --> for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools. {{Template parameter usage|based=y}}<!-- e.o. #if:noheader -->}} '''TemplateData for {{{1|{{BASEPAGENAME}}}}}''' </div><includeonly><!-- check parameters -->{{#invoke:Check for unknown parameters|check |unknown={{template other|1=[[Category:Pages using TemplateData header with unknown parameters|_VALUE_]]}} |template=Template:TemplateData header |1 |nolink |noheader |preview=<div class="error" style="font-weight:normal">Unknown parameter '_VALUE_' in [[Template:TemplateData header]].</div> }}<!-- -->{{template other|{{sandbox other|| [[Category:Templates using TemplateData]] }}}}</includeonly><!-- --><noinclude>{{Documentation}}</noinclude> ddfbb4ae793846b96d4c06330417fa6ed4da2adc Module:Sidebar/styles.css 828 206 409 2021-09-20T01:15:45Z beeleth>Goszei 0 self-rv, it's a little tight text text/plain /* {{pp-template}} */ /* TODO: Invert width design to be "mobile first" */ .sidebar { /* TODO: Ask if we should have max-width 22em instead */ width: 22em; /* @noflip */ float: right; /* @noflip */ clear: right; /* @noflip */ margin: 0.5em 0 1em 1em; background: #f8f9fa; border: 1px solid #aaa; padding: 0.2em; text-align: center; line-height: 1.4em; font-size: 88%; border-collapse: collapse; /* Timeless has display: none on .nomobile at mobile resolutions, so we * unhide it with display: table and let precedence and proximity win. */ display: table; } /* Unfortunately, so does Minerva desktop, except Minerva drops an * !important on the declaration. So we have to be mean for Minerva users. * Mobile removes the element entirely with `wgMFRemovableClasses` in * https://github.com/wikimedia/operations-mediawiki-config/blob/master/ wmf-config/InitialiseSettings.php#L16992 * which is why displaying it categorically with display: table works. * We don't really want to expose the generic user in the wild on mobile to have * to deal with sidebars. (Maybe the ones with collapsible lists, so that * might be an improvement. That is blocked on [[:phab:T111565]].) */ body.skin-minerva .sidebar { display: table !important; /* also, minerva is way too aggressive about other stylings on tables. * TODO remove when this template gets moved to a div. plans on talk page. * We always float right on Minerva because that's a lot of extra CSS * otherwise. */ float: right !important; margin: 0.5em 0 1em 1em !important; } .sidebar-subgroup { width: 100%; margin: 0; border-spacing: 0; } .sidebar-left { /* @noflip */ float: left; /* @noflip */ clear: left; /* @noflip */ margin: 0.5em 1em 1em 0; } .sidebar-none { float: none; clear: both; /* @noflip */ margin: 0.5em 1em 1em 0; } .sidebar-outer-title { padding: 0 0.4em 0.2em; font-size: 125%; line-height: 1.2em; font-weight: bold; } .sidebar-top-image { padding: 0.4em; } .sidebar-top-caption, .sidebar-pretitle-with-top-image, .sidebar-caption { padding: 0.2em 0.4em 0; line-height: 1.2em; } .sidebar-pretitle { padding: 0.4em 0.4em 0; line-height: 1.2em; } .sidebar-title, .sidebar-title-with-pretitle { padding: 0.2em 0.8em; font-size: 145%; line-height: 1.2em; } .sidebar-title-with-pretitle { padding: 0.1em 0.4em; } .sidebar-image { padding: 0.2em 0.4em 0.4em; } .sidebar-heading { padding: 0.1em 0.4em; } .sidebar-content { padding: 0 0.5em 0.4em; } .sidebar-content-with-subgroup { padding: 0.1em 0.4em 0.2em; } .sidebar-above, .sidebar-below { padding: 0.3em 0.8em; font-weight: bold; } .sidebar-collapse .sidebar-above, .sidebar-collapse .sidebar-below { border-top: 1px solid #aaa; border-bottom: 1px solid #aaa; } .sidebar-navbar { text-align: right; font-size: 115%; padding: 0 0.4em 0.4em; } .sidebar-list-title { padding: 0 0.4em; text-align: left; font-weight: bold; line-height: 1.6em; font-size: 105%; } /* centered text with mw-collapsible headers is finicky */ .sidebar-list-title-c { padding: 0 0.4em; text-align: center; margin: 0 3.3em; } @media (max-width: 720px) { /* users have wide latitude to set arbitrary width and margin :( "Super-specific" selector to prevent overriding this appearance by lower level sidebars too */ body.mediawiki .sidebar { width: 100% !important; clear: both; float: none !important; /* Remove when we div based; Minerva is dumb */ margin-left: 0 !important; margin-right: 0 !important; } /* TODO: We might consider making all links wrap at small resolutions and then * only introduce nowrap at higher resolutions. Do when we invert the media * query. */ } 7d621b35a37807a103b59075851fe36201204ceb Module:Unsubst 828 320 629 2021-10-08T18:22:16Z vast>Trappist the monk 0 sync from sandbox; see [[Module_talk:Unsubst#template_invocation_name_override|talk]]; Scribunto text/plain local checkType = require('libraryUtil').checkType local p = {} local BODY_PARAM = '$B' local specialParams = { ['$params'] = 'parameter list', ['$aliases'] = 'parameter aliases', ['$flags'] = 'flags', ['$B'] = 'template content', ['$template-name'] = 'template invocation name override', } function p.main(frame, body) -- If we are substing, this function returns a template invocation, and if -- not, it returns the template body. The template body can be specified in -- the body parameter, or in the template parameter defined in the -- BODY_PARAM variable. This function can be called from Lua or from -- #invoke. -- Return the template body if we aren't substing. if not mw.isSubsting() then if body ~= nil then return body elseif frame.args[BODY_PARAM] ~= nil then return frame.args[BODY_PARAM] else error(string.format( "no template content specified (use parameter '%s' from #invoke)", BODY_PARAM ), 2) end end -- Sanity check for the frame object. if type(frame) ~= 'table' or type(frame.getParent) ~= 'function' or not frame:getParent() then error( "argument #1 to 'main' must be a frame object with a parent " .. "frame available", 2 ) end -- Find the invocation name. local mTemplateInvocation = require('Module:Template invocation') local name if frame.args['$template-name'] and '' ~= frame.args['$template-name'] then name = frame.args['$template-name'] -- override whatever the template name is with this name else name = mTemplateInvocation.name(frame:getParent():getTitle()) end -- Combine passed args with passed defaults local args = {} if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*override%s*,' ) then for k, v in pairs( frame:getParent().args ) do args[k] = v end for k, v in pairs( frame.args ) do if not specialParams[k] then if v == '__DATE__' then v = mw.getContentLanguage():formatDate( 'F Y' ) end args[k] = v end end else for k, v in pairs( frame.args ) do if not specialParams[k] then if v == '__DATE__' then v = mw.getContentLanguage():formatDate( 'F Y' ) end args[k] = v end end for k, v in pairs( frame:getParent().args ) do args[k] = v end end -- Trim parameters, if not specified otherwise if not string.find( ','..(frame.args['$flags'] or '')..',', ',%s*keep%-whitespace%s*,' ) then for k, v in pairs( args ) do args[k] = mw.ustring.match(v, '^%s*(.*)%s*$') or '' end end -- Pull information from parameter aliases local aliases = {} if frame.args['$aliases'] then local list = mw.text.split( frame.args['$aliases'], '%s*,%s*' ) for k, v in ipairs( list ) do local tmp = mw.text.split( v, '%s*>%s*' ) aliases[tonumber(mw.ustring.match(tmp[1], '^[1-9][0-9]*$')) or tmp[1]] = ((tonumber(mw.ustring.match(tmp[2], '^[1-9][0-9]*$'))) or tmp[2]) end end for k, v in pairs( aliases ) do if args[k] and ( not args[v] or args[v] == '' ) then args[v] = args[k] end args[k] = nil end -- Remove empty parameters, if specified if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*remove%-empty%s*,' ) then local tmp = 0 for k, v in ipairs( args ) do if v ~= '' or ( args[k+1] and args[k+1] ~= '' ) or ( args[k+2] and args[k+2] ~= '' ) then tmp = k else break end end for k, v in pairs( args ) do if v == '' then if not (type(k) == 'number' and k < tmp) then args[k] = nil end end end end -- Order parameters if frame.args['$params'] then local params, tmp = mw.text.split( frame.args['$params'], '%s*,%s*' ), {} for k, v in ipairs(params) do v = tonumber(mw.ustring.match(v, '^[1-9][0-9]*$')) or v if args[v] then tmp[v], args[v] = args[v], nil end end for k, v in pairs(args) do tmp[k], args[k] = args[k], nil end args = tmp end return mTemplateInvocation.invocation(name, args) end p[''] = p.main -- For backwards compatibility return p 7f01ffc8aa2ac4a4772f14c12e0b77e384ecabb6 Help:Infobox/user style 12 231 461 2021-10-11T22:29:09Z beeleth>Izno 0 adjust in preparation for infoboxes going to TemplateStyles wikitext text/x-wiki {{{heading| ==Infoboxes and user style == }}} Users can have [[WP:User style|user CSS]] that hides<!--, moves, or makes collapsible--> any infoboxes in their own browsers. To hide all infoboxes, add the following to [[Special:MyPage/common.css]] (for all [[WP:Skin|skins]], or [[Special:MyPage/skin.css]] for just the current skin), on a line by itself: <syntaxhighlight lang="css">div.mw-parser-output .infobox { display: none; }</syntaxhighlight> Alternatively, you can add the following code to [[Special:MyPage/common.js|your common.js]] or into a browser user script that is executed by an extension like [[Greasemonkey]]: <syntaxhighlight lang="js">$('.infobox').hide();</syntaxhighlight> Be aware that although{{#if:{{{guideline|}}}||, per [[WP:Manual of Style/Infoboxes]],}} all information in an infobox ideally should also be found in the main body of an article, there isn't perfect compliance with this guideline. For example, the full taxonomic hierarchy in {{tlx|Taxobox}}, and the OMIM and other medical database codes of {{tlx|Infobox disease}} are often not found in the main article content. The infobox is also often the location of the most significant, even only, image in an article.<!-- Needs Special:Mypage/common.js options for: * Making infoboxes collapsible ** Making them auto-collapsed * Moving infoboxes to bottom of page --><noinclude> {{Documentation|content= This documentation snippet is transcluded at [[Help:Infobox]], [[Template:Infobox/doc]], [[WP:Customisation#Hiding specific messages]], [[Help:User style]], [[WP:Manual of Style/Infoboxes]], and other places where this information is relevant. As a template, this snippet takes a {{para|heading}} parameter to replace the level-2 <code>==Infoboxes and user style==</code> section heading code, as needed. E.g., for a <code>=== ... ===</code> level-3 heading: <code><nowiki>heading={{=}}{{=}}{{=}}Infoboxes and user style{{=}}{{=}}{{=}}</nowiki></code> }} </noinclude> 6da0d499b1fda33a6ba13b40e6605692fc3bb489 Template:Module other 10 237 473 2021-10-20T19:50:22Z beeleth>MusikBot II 0 Changed protection settings for "[[Template:Module other]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3570 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite)) wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:Module}} | module | other }} }} | module = {{{1|}}} | other | #default = {{{2|}}} }}<!--End switch--><noinclude> {{documentation}} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 503694836c1b07142e63fd35d8be69ec8bb9ffe7 Template:Main other 10 178 349 2021-12-10T16:08:06Z beeleth>Xaosflux 0 <!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --> wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:0}} | main | other }} }} | main = {{{1|}}} | other | #default = {{{2|}}} }}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --> </noinclude> 86ad907ffeea3cc545159e00cd1f2d6433946450 Module:Lua banner 828 224 447 2021-12-10T22:30:39Z beeleth>Fayenatic london 0 Update categories, see [[Wikipedia:Categories for discussion/Log/2021 October 31]] Scribunto text/plain -- This module implements the {{lua}} template. local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local p = {} function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end function p._main(args) local modules = mTableTools.compressSparseArray(args) local box = p.renderBox(modules) local trackingCategories = p.renderTrackingCategories(args, modules) return box .. trackingCategories end function p.renderBox(modules) local boxArgs = {} if #modules < 1 then boxArgs.text = '<strong class="error">Error: no modules specified</strong>' else local moduleLinks = {} for i, module in ipairs(modules) do moduleLinks[i] = string.format('[[:%s]]', module) local maybeSandbox = mw.title.new(module .. '/sandbox') if maybeSandbox.exists then moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText) end end local moduleList = mList.makeList('bulleted', moduleLinks) local title = mw.title.getCurrentTitle() if title.subpageText == "doc" then title = title.basePageTitle end if title.contentModel == "Scribunto" then boxArgs.text = 'This module depends on the following other modules:' .. moduleList else boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList end end boxArgs.type = 'notice' boxArgs.small = true boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]' return mMessageBox.main('mbox', boxArgs) end function p.renderTrackingCategories(args, modules, titleObj) if yesno(args.nocat) then return '' end local cats = {} -- Error category if #modules < 1 then cats[#cats + 1] = 'Lua templates with errors' end -- Lua templates category titleObj = titleObj or mw.title.getCurrentTitle() local subpageBlacklist = { doc = true, sandbox = true, sandbox2 = true, testcases = true } if not subpageBlacklist[titleObj.subpageText] then local protCatName if titleObj.namespace == 10 then local category = args.category if not category then local categories = { ['Module:String'] = 'Templates based on the String Lua module', ['Module:Math'] = 'Templates based on the Math Lua module', ['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module', ['Module:Citation'] = 'Templates based on the Citation/CS1 Lua module' } categories['Module:Citation/CS1'] = categories['Module:Citation'] category = modules[1] and categories[modules[1]] category = category or 'Lua-based templates' end cats[#cats + 1] = category protCatName = "Templates using under-protected Lua modules" elseif titleObj.namespace == 828 then protCatName = "Modules depending on under-protected modules" end if not args.noprotcat and protCatName then local protLevels = { autoconfirmed = 1, extendedconfirmed = 2, templateeditor = 3, sysop = 4 } local currentProt if titleObj.id ~= 0 then -- id is 0 (page does not exist) if am previewing before creating a template. currentProt = titleObj.protectionLevels["edit"][1] end if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end for i, module in ipairs(modules) do if module ~= "WP:libraryUtil" then local moduleProt = mw.title.new(module).protectionLevels["edit"][1] if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end if moduleProt < currentProt then cats[#cats + 1] = protCatName break end end end end end for i, cat in ipairs(cats) do cats[i] = string.format('[[Category:%s]]', cat) end return table.concat(cats) end return p 6e3bedcc849ff22d4f702708965c39b97d7e8585 Module:Hatnote list 828 198 393 2021-12-26T20:05:24Z beeleth>Nihiltres 0 Undid revision 1062166786 by [[Special:Contributions/Matthiaspaul|Matthiaspaul]] ([[User talk:Matthiaspaul|talk]]); should be fixed now, and if not, please ping me with examples as I couldn't reproduce the original error Scribunto text/plain -------------------------------------------------------------------------------- -- Module:Hatnote list -- -- -- -- This module produces and formats lists for use in hatnotes. In particular, -- -- it implements the for-see list, i.e. lists of "For X, see Y" statements, -- -- as used in {{about}}, {{redirect}}, and their variants. Also introduced -- -- are andList & orList helpers for formatting lists with those conjunctions. -- -------------------------------------------------------------------------------- local mArguments --initialize lazily local mFormatLink = require('Module:Format link') local mHatnote = require('Module:Hatnote') local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local p = {} -------------------------------------------------------------------------------- -- List stringification helper functions -- -- These functions are used for stringifying lists, usually page lists inside -- the "Y" portion of "For X, see Y" for-see items. -------------------------------------------------------------------------------- --default options table used across the list stringification functions local stringifyListDefaultOptions = { conjunction = "and", separator = ",", altSeparator = ";", space = " ", formatted = false } --Searches display text only local function searchDisp(haystack, needle) return string.find( string.sub(haystack, (string.find(haystack, '|') or 0) + 1), needle ) end -- Stringifies a list generically; probably shouldn't be used directly local function stringifyList(list, options) -- Type-checks, defaults, and a shortcut checkType("stringifyList", 1, list, "table") if #list == 0 then return nil end checkType("stringifyList", 2, options, "table", true) options = options or {} for k, v in pairs(stringifyListDefaultOptions) do if options[k] == nil then options[k] = v end end local s = options.space -- Format the list if requested if options.formatted then list = mFormatLink.formatPages( {categorizeMissing = mHatnote.missingTargetCat}, list ) end -- Set the separator; if any item contains it, use the alternate separator local separator = options.separator for k, v in pairs(list) do if searchDisp(v, separator) then separator = options.altSeparator break end end -- Set the conjunction, apply Oxford comma, and force a comma if #1 has "§" local conjunction = s .. options.conjunction .. s if #list == 2 and searchDisp(list[1], "§") or #list > 2 then conjunction = separator .. conjunction end -- Return the formatted string return mw.text.listToText(list, separator .. s, conjunction) end --DRY function function p.conjList (conj, list, fmt) return stringifyList(list, {conjunction = conj, formatted = fmt}) end -- Stringifies lists with "and" or "or" function p.andList (...) return p.conjList("and", ...) end function p.orList (...) return p.conjList("or", ...) end -------------------------------------------------------------------------------- -- For see -- -- Makes a "For X, see [[Y]]." list from raw parameters. Intended for the -- {{about}} and {{redirect}} templates and their variants. -------------------------------------------------------------------------------- --default options table used across the forSee family of functions local forSeeDefaultOptions = { andKeyword = 'and', title = mw.title.getCurrentTitle().text, otherText = 'other uses', forSeeForm = 'For %s, see %s.', } --Collapses duplicate punctuation local function punctuationCollapse (text) local replacements = { ["%.%.$"] = ".", ["%?%.$"] = "?", ["%!%.$"] = "!", ["%.%]%]%.$"] = ".]]", ["%?%]%]%.$"] = "?]]", ["%!%]%]%.$"] = "!]]" } for k, v in pairs(replacements) do text = string.gsub(text, k, v) end return text end -- Structures arguments into a table for stringification, & options function p.forSeeArgsToTable (args, from, options) -- Type-checks and defaults checkType("forSeeArgsToTable", 1, args, 'table') checkType("forSeeArgsToTable", 2, from, 'number', true) from = from or 1 checkType("forSeeArgsToTable", 3, options, 'table', true) options = options or {} for k, v in pairs(forSeeDefaultOptions) do if options[k] == nil then options[k] = v end end -- maxArg's gotten manually because getArgs() and table.maxn aren't friends local maxArg = 0 for k, v in pairs(args) do if type(k) == 'number' and k > maxArg then maxArg = k end end -- Structure the data out from the parameter list: -- * forTable is the wrapper table, with forRow rows -- * Rows are tables of a "use" string & a "pages" table of pagename strings -- * Blanks are left empty for defaulting elsewhere, but can terminate list local forTable = {} local i = from local terminated = false -- If there is extra text, and no arguments are given, give nil value -- to not produce default of "For other uses, see foo (disambiguation)" if options.extratext and i > maxArg then return nil end -- Loop to generate rows repeat -- New empty row local forRow = {} -- On blank use, assume list's ended & break at end of this loop forRow.use = args[i] if not args[i] then terminated = true end -- New empty list of pages forRow.pages = {} -- Insert first pages item if present table.insert(forRow.pages, args[i + 1]) -- If the param after next is "and", do inner loop to collect params -- until the "and"'s stop. Blanks are ignored: "1|and||and|3" → {1, 3} while args[i + 2] == options.andKeyword do if args[i + 3] then table.insert(forRow.pages, args[i + 3]) end -- Increment to next "and" i = i + 2 end -- Increment to next use i = i + 2 -- Append the row table.insert(forTable, forRow) until terminated or i > maxArg return forTable end -- Stringifies a table as formatted by forSeeArgsToTable function p.forSeeTableToString (forSeeTable, options) -- Type-checks and defaults checkType("forSeeTableToString", 1, forSeeTable, "table", true) checkType("forSeeTableToString", 2, options, "table", true) options = options or {} for k, v in pairs(forSeeDefaultOptions) do if options[k] == nil then options[k] = v end end -- Stringify each for-see item into a list local strList = {} if forSeeTable then for k, v in pairs(forSeeTable) do local useStr = v.use or options.otherText local pagesStr = p.andList(v.pages, true) or mFormatLink._formatLink{ categorizeMissing = mHatnote.missingTargetCat, link = mHatnote.disambiguate(options.title) } local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr) forSeeStr = punctuationCollapse(forSeeStr) table.insert(strList, forSeeStr) end end if options.extratext then table.insert(strList, punctuationCollapse(options.extratext..'.')) end -- Return the concatenated list return table.concat(strList, ' ') end -- Produces a "For X, see [[Y]]" string from arguments. Expects index gaps -- but not blank/whitespace values. Ignores named args and args < "from". function p._forSee (args, from, options) local forSeeTable = p.forSeeArgsToTable(args, from, options) return p.forSeeTableToString(forSeeTable, options) end -- As _forSee, but uses the frame. function p.forSee (frame, from, options) mArguments = require('Module:Arguments') return p._forSee(mArguments.getArgs(frame), from, options) end return p d0828422b1aa0d0d0092d699d059c9e882260398 Module:Navbar/styles.css 828 201 399 2022-01-03T23:12:15Z beeleth>Izno 0 navbar styles that were moved to parent templates text text/plain /* {{pp|small=yes}} */ .navbar { display: inline; font-size: 88%; font-weight: normal; } .navbar-collapse { float: left; text-align: left; } .navbar-boxtext { word-spacing: 0; } .navbar ul { display: inline-block; white-space: nowrap; line-height: inherit; } .navbar-brackets::before { margin-right: -0.125em; content: '[ '; } .navbar-brackets::after { margin-left: -0.125em; content: ' ]'; } .navbar li { word-spacing: -0.125em; } .navbar a > span, .navbar a > abbr { text-decoration: inherit; } .navbar-mini abbr { font-variant: small-caps; border-bottom: none; text-decoration: none; cursor: inherit; } .navbar-ct-full { font-size: 114%; margin: 0 7em; } .navbar-ct-mini { font-size: 114%; margin: 0 4em; } 9d4056f949b4f0b159e3d40dfb1a5f01e72f9571 Emperor Satan 0 156 312 2022-01-06T10:43:16Z beeleth>Beeleth 0 wikitext text/x-wiki {{General_Character|gender=Cisgender<br> <small>• he/him</small>|birth=First Angel Wave|real_name=Satan<br> Lucifer the Morning Star (formerly)|title1=Emperor Satan|species=Fallen seraph|theme_song=[https://www.youtube.com/watch?v=hPMnIymc3Cs Lemon Demon - Spiral of Ants]|caption1=Design as of 2021|orientation=Gay|universe=[[Pride of the Peacock Angel]]|residence=[[Lemegeton]]|title=Hellish Emperor of Fallen Stars|sector=Raven Sector|image1=[[Satan.png]]|affiliation=[[Lucifer's Rebellion]]|voice_claim=[https://www.youtube.com/watch?v=ETEg-SB01QY Andrew VanWyngarden]|nickname(s)=Luci<br> Fern<br> The Devil<br>|relationships=[[Kyrie]] <small>(crush)</small><br>[[Great Prince Mephistopheles|Mephistopheles]] <small>(spawn)</small><br>[[Great Prince Pruflas|Pruflas]] <small>(spawn)</small><br>[[Great Prince Beelzebub|Beelzebub]] <small>(spawn)</small>}}''Not to be confused with [[Great Prince Beelzebub]].'' Emperor Satan is the ruler of the entirety of [[Hell]], residing in the Raven sector which contains the capital, [[Lemegeton]]. His only subordinates who he actively works with as Hellish Emperor are the three Great Princes: [[Great Prince Beelzebub|Beelzebub]], [[Great Prince Pruflas|Pruflas]], and [[Great Prince Mephistopheles|Mephistopheles]]. He was formerly known as Lucifer the Morning Star, the brightest star in [[Heaven]] under [[Kyrie]] until he was banished and turned into a fallen [[Abstract angels|angel]] following a [[Lucifer's Rebellion|rebellion]] he led. He has strong one-sided feelings towards Kyrie. == Story == === Heaven === a === Unrest and Rebellion === a === Fall from Heaven === a == Personality == a == Abilities == # '''Speaking Cacophonic and other languages:''' Since he is a fallen angel, he naturally speaks [[Cacophonic]], which is the language of demons. As well as that, he is able to understand all other [[Mortals|mortal]] languages and respond in them even if he doesn't recognize he is speaking in it. #* Like [[Duchess Astaroeth]], he is able to read and write all languages as long as it was not written directly by a divine being. # '''Communicating to animals:''' He can understand and communicate with all animals. He is most like a goat, so he understands goats the best and vice versa. His second best "animal language" is that of snakes. # '''Flight and levitation:''' Satan is able to fly and levitate. He does not need his wings to levitate, but they help him fly and glide. Flight takes more energy than levitation, so he avoids doing it whenever possible; however, it is faster than most other means of transportation he can provide himself. # '''Using minimal teleportation:''' By thinking about a nearby location, he can reach it near-instantly as long as he can fit himself there. He can chain teleportation to go further than he would with just one attempt. # '''Melting and shapeshifting:''' He is naturally always fluid-like, as he is composed mostly of Abstract substance. He can become more liquid at will and, along with that, change his shape easily. He is completely reshapable, and if this power is combined with his ability to manipulate light, he can appear exactly as he pleases at any time. He can compress or expand himself to appear smaller or larger respectively, but he cannot become too large or else he will be weaker. # Harvesting souls: # '''Mimicking:''' He can mimic sounds, music, and voices as long as he is familiar with how they sound. He can do so with things he hasn't heard personally before if he has access to memories of it. # Manipulating sound: # '''Manipulating light:''' Since Abstract angels are personified stars and he is what remains of one, he can manipulate light and create illusions. The blue and white parts of his body are made of light, so he can change them as he wishes. #* He can completely and utterly disregard physics and turn light into weapons, tools, or whatever else he pleases. He often uses his halo for this. # Summoning/creating demons and familiars: # '''Using advanced psychokinesis:''' He can manipulate objects, people, and certain elements (see 14-17 for more information) easily by gesturing or thinking about it. His range is much larger than a regular psychokinetic demon, and encompasses the entirety of Hell and even further beyond it. In order to affect something, he must be aware of it; he does not need to know its current whereabouts to do so. He can affect the inside and outside of whatever he is manipulating. He has no actual limit on how many things he can affect at once. #* If he really wishes, he can use his powers to shred apart the internal organs of the entire population of a large city and kill them all, and there would be no way to know it was him. However, there are better things to do than that, and he knows it. # '''Using advanced possession:''' He is capable of possessing most if not all vessels, even if they are already being controlled by someone else (including natural bodies). Most of the time, unless he makes a mental or physical disruption, it's often impossible to tell someone has been possessed by him, even to the controller of the vessel. It's possible for him to sit in the "background" or take over the body completely. #* Though he was initially forced out of his body and into a noncorporeal form from the impact of the fall, his body and soul are somewhat conjoined nowadays in a sense. If he is removed from a body he is possessing by force and it is not his own, he will likely appear physically rather than spiritually. #* Astaroeth created a vessel, [[Zenko]], mainly for Satan's use but also for any demons who aren't capable of advanced possession, as Zenko's soul is incomplete and seeks certain types of souls to complete it. # '''Using advanced telepathy:''' By focusing on a person or group of people, he is able to infiltrate their mind and access most if not all of their thoughts and memories; he can also plant his own thoughts and memories within the front of their mind or the deepest recesses of it. Along with this, he can erase thoughts and memories. He is also able to create one-way or two-way communication channels carried by thoughts. #* He is immune to most other telepathy unless it is being carried out via a particularly powerful telepath or just someone/something more powerful than him in general. #* He is able to use these powers for hypnosis and brainwashing purposes, and it is much, much easier than doing so without powers. # Using cryomancy: # Using aquamancy: # Using geomancy: # Using pyromancy: # '''Entering homeostasis:''' Though it can be considered a weakness, Satan can enter homeostasis if he is overwhelmed or needs to recharge/retain energy. While in this state, he often creates a near-impenetrable highly compressed shield of Abstract susbstance around himself and allows his light to freely shape itself within the shield. If he enters this state out of his free will, he is likely able to exit it as he wishes; if he is forced to take this state, he will remain in it until his body is recharged. #* It's nearly impossible to force him out of homeostasis unless he wishes for it. #* Upon the impact of his fall from heaven, he entered a homeostasis-like state, albeit without his soul intact. The only difference is that he was unable to retain his ice powers and he slowly froze the crater he created. He remained like this for several hundreds of years. == Relationships == === Kyrie === abfasjkhjgabbgnjsk === Great Princes === The Great Princes are considered to be Satan's sons, but they are technically unrelated aside from being created as a result of his emotions reacting to Abstract substance at the time of his impact on Earth. His view of each of the princes varies, since they're based on different aspects of him and remind him of different people. ==== Mephistopheles ==== agoashgau ==== Pruflas ==== ashguofassafisanfas ==== Beelzebub ==== aiugsbohisnafaijfns === Underlings === Since he is the ruler of the entirety of Hell and oversees most legal activity within it, he has met most demons since those who have a position of any sort work for him. He has known most of the highest-ranking demons for the longest, as many of them were once angels like he was. == Trivia == * Following King Beeleth, he was the second Pride of the Peacock Angel character ever created. They initially had a more personal relationship, with Beeleth being one of his direct subordinates rather than governing another circle of Hell away from him. *His first design was more visually ice-related and didn't have Abstract substance because it didn't exist at the time of his actual creation. == Related Pages == * [[Lucifer's Rebellion]], a major historical/plot event in [[Pride of the Peacock Angel]] *[[Lemegeton]], the capital of Hell [[Category:Pride of the Peacock Angel]] [[Category:Characters]] [[Category:LGBT+ Characters]] [[Category:Neurodivergent Characters]] [[Category:Fallen Angels]] [[Category:Abstract Demons]] [[Category:Shapeshifters]] [[Category:Iconic Characters]] 90b553a3a03778b3575704422e67d47bac323770 Hell 0 158 316 2022-01-06T12:34:33Z beeleth>Beeleth 0 wikitext text/x-wiki {{General Location|title1=Hell|universe=[[Pride of the Peacock Angel]]|location=[[Earth_(PotPA)|Earth]]|capital=Lemegeton|founder=[[Emperor Satan]]|leader=[[Emperor Satan]]|creation=Post-Rebellion|population=Undefined|notable_people=[[Emperor Satan]]}} Hell is the place that was created directly as a result of [[Lucifer's Rebellion]] falling from [[Heaven]], and it was originally a large crater caused by the impact of [[Emperor Satan|Satan]]'s fall. It was later turned into an entire city split into sectors ruled by kings and queens under Satan's rule. == Lemegeton == hello [[Category:Location]] [[Category:Abstract Space]] [[Category:Pride of the Peacock Angel]] c389d026ba84809649976e3df1fc3f73453ea702 Module:Infobox/styles.css 828 183 359 2022-01-18T15:18:00Z beeleth>Jdlrobson 0 Fix [[phab:T281642]], a pet peeve of mine. This copies across styles from [[MediaWiki:Minerva.css]] text text/plain /* {{pp|small=y}} */ /* * This TemplateStyles sheet deliberately does NOT include the full set of * infobox styles. We are still working to migrate all of the manual * infoboxes. See [[MediaWiki talk:Common.css/to do#Infobox]] * DO NOT ADD THEM HERE */ /* * not strictly certain these styles are necessary since the modules now * exclusively output infobox-subbox or infobox, not both * just replicating the module faithfully */ .infobox-subbox { padding: 0; border: none; margin: -3px; width: auto; min-width: 100%; font-size: 100%; clear: none; float: none; background-color: transparent; } .infobox-3cols-child { margin: auto; } .infobox .navbar { font-size: 100%; } /* T281642 */ body.skin-minerva .infobox-header, body.skin-minerva .infobox-subheader, body.skin-minerva .infobox-above, body.skin-minerva .infobox-title, body.skin-minerva .infobox-image, body.skin-minerva .infobox-full-data, body.skin-minerva .infobox-below { text-align: center; } e8de6d96f4fde53afc4a6b0fed534405ab59b0a7 Module:Documentation/config 828 213 425 2022-01-25T23:46:11Z beeleth>Ianblair23 0 link Scribunto text/plain ---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------------------------- local cfg = {} -- Do not edit this line. ---------------------------------------------------------------------------------------------------- -- Protection template configuration ---------------------------------------------------------------------------------------------------- -- cfg['protection-reason-edit'] -- The protection reason for edit-protected templates to pass to -- [[Module:Protection banner]]. cfg['protection-reason-edit'] = 'template' --[[ ---------------------------------------------------------------------------------------------------- -- Sandbox notice configuration -- -- On sandbox pages the module can display a template notifying users that the current page is a -- sandbox, and the location of test cases pages, etc. The module decides whether the page is a -- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the -- messages that the notices contains. ---------------------------------------------------------------------------------------------------- --]] -- cfg['sandbox-notice-image'] -- The image displayed in the sandbox notice. cfg['sandbox-notice-image'] = '[[File:Sandbox.svg|50px|alt=|link=]]' --[[ -- cfg['sandbox-notice-pagetype-template'] -- cfg['sandbox-notice-pagetype-module'] -- cfg['sandbox-notice-pagetype-other'] -- The page type of the sandbox page. The message that is displayed depends on the current subject -- namespace. This message is used in either cfg['sandbox-notice-blurb'] or -- cfg['sandbox-notice-diff-blurb']. --]] cfg['sandbox-notice-pagetype-template'] = '[[Wikipedia:Template test cases|template sandbox]] page' cfg['sandbox-notice-pagetype-module'] = '[[Wikipedia:Template test cases|module sandbox]] page' cfg['sandbox-notice-pagetype-other'] = 'sandbox page' --[[ -- cfg['sandbox-notice-blurb'] -- cfg['sandbox-notice-diff-blurb'] -- cfg['sandbox-notice-diff-display'] -- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence -- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page -- type, which is either cfg['sandbox-notice-pagetype-template'], -- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what -- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between -- the sandbox and the main template. The display value of the diff link is set by -- cfg['sandbox-notice-compare-link-display']. --]] cfg['sandbox-notice-blurb'] = 'This is the $1 for $2.' cfg['sandbox-notice-diff-blurb'] = 'This is the $1 for $2 ($3).' cfg['sandbox-notice-compare-link-display'] = 'diff' --[[ -- cfg['sandbox-notice-testcases-blurb'] -- cfg['sandbox-notice-testcases-link-display'] -- cfg['sandbox-notice-testcases-run-blurb'] -- cfg['sandbox-notice-testcases-run-link-display'] -- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit. $1 is a link to the test cases page. -- cfg['sandbox-notice-testcases-link-display'] is the display value for that link. -- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test -- cases page, and $2 is a link to the page to run it. -- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test -- cases. --]] cfg['sandbox-notice-testcases-blurb'] = 'See also the companion subpage for $1.' cfg['sandbox-notice-testcases-link-display'] = 'test cases' cfg['sandbox-notice-testcases-run-blurb'] = 'See also the companion subpage for $1 ($2).' cfg['sandbox-notice-testcases-run-link-display'] = 'run' -- cfg['sandbox-category'] -- A category to add to all template sandboxes. cfg['sandbox-category'] = 'Template sandboxes' ---------------------------------------------------------------------------------------------------- -- Start box configuration ---------------------------------------------------------------------------------------------------- -- cfg['documentation-icon-wikitext'] -- The wikitext for the icon shown at the top of the template. cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- cfg['template-namespace-heading'] -- The heading shown in the template namespace. cfg['template-namespace-heading'] = 'Template documentation' -- cfg['module-namespace-heading'] -- The heading shown in the module namespace. cfg['module-namespace-heading'] = 'Module documentation' -- cfg['file-namespace-heading'] -- The heading shown in the file namespace. cfg['file-namespace-heading'] = 'Summary' -- cfg['other-namespaces-heading'] -- The heading shown in other namespaces. cfg['other-namespaces-heading'] = 'Documentation' -- cfg['view-link-display'] -- The text to display for "view" links. cfg['view-link-display'] = 'view' -- cfg['edit-link-display'] -- The text to display for "edit" links. cfg['edit-link-display'] = 'edit' -- cfg['history-link-display'] -- The text to display for "history" links. cfg['history-link-display'] = 'history' -- cfg['purge-link-display'] -- The text to display for "purge" links. cfg['purge-link-display'] = 'purge' -- cfg['create-link-display'] -- The text to display for "create" links. cfg['create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Link box (end box) configuration ---------------------------------------------------------------------------------------------------- -- cfg['transcluded-from-blurb'] -- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page. cfg['transcluded-from-blurb'] = 'The above [[Wikipedia:Template documentation|documentation]] is [[Help:Transclusion|transcluded]] from $1.' --[[ -- cfg['create-module-doc-blurb'] -- Notice displayed in the module namespace when the documentation subpage does not exist. -- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the -- display cfg['create-link-display']. --]] cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' ---------------------------------------------------------------------------------------------------- -- Experiment blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['experiment-blurb-template'] -- cfg['experiment-blurb-module'] -- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages. -- It is only shown in the template and module namespaces. With the default English settings, it -- might look like this: -- -- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages. -- -- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links. -- -- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending -- on what namespace we are in. -- -- Parameters: -- -- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display']) -- -- If the sandbox doesn't exist, it is in the format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display']) -- -- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload'] -- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display'] -- loads a default edit summary of cfg['mirror-edit-summary']. -- -- $2 is a link to the test cases page. If the test cases page exists, it is in the following format: -- -- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display']) -- -- If the test cases page doesn't exist, it is in the format: -- -- cfg['testcases-link-display'] (cfg['testcases-create-link-display']) -- -- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the -- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current -- namespace. --]] cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages." cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages." ---------------------------------------------------------------------------------------------------- -- Sandbox link configuration ---------------------------------------------------------------------------------------------------- -- cfg['sandbox-subpage'] -- The name of the template subpage typically used for sandboxes. cfg['sandbox-subpage'] = 'sandbox' -- cfg['template-sandbox-preload'] -- Preload file for template sandbox pages. cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox' -- cfg['module-sandbox-preload'] -- Preload file for Lua module sandbox pages. cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox' -- cfg['sandbox-link-display'] -- The text to display for "sandbox" links. cfg['sandbox-link-display'] = 'sandbox' -- cfg['sandbox-edit-link-display'] -- The text to display for sandbox "edit" links. cfg['sandbox-edit-link-display'] = 'edit' -- cfg['sandbox-create-link-display'] -- The text to display for sandbox "create" links. cfg['sandbox-create-link-display'] = 'create' -- cfg['compare-link-display'] -- The text to display for "compare" links. cfg['compare-link-display'] = 'diff' -- cfg['mirror-edit-summary'] -- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the -- template page. cfg['mirror-edit-summary'] = 'Create sandbox version of $1' -- cfg['mirror-link-display'] -- The text to display for "mirror" links. cfg['mirror-link-display'] = 'mirror' -- cfg['mirror-link-preload'] -- The page to preload when a user clicks the "mirror" link. cfg['mirror-link-preload'] = 'Template:Documentation/mirror' ---------------------------------------------------------------------------------------------------- -- Test cases link configuration ---------------------------------------------------------------------------------------------------- -- cfg['testcases-subpage'] -- The name of the template subpage typically used for test cases. cfg['testcases-subpage'] = 'testcases' -- cfg['template-testcases-preload'] -- Preload file for template test cases pages. cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases' -- cfg['module-testcases-preload'] -- Preload file for Lua module test cases pages. cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases' -- cfg['testcases-link-display'] -- The text to display for "testcases" links. cfg['testcases-link-display'] = 'testcases' -- cfg['testcases-edit-link-display'] -- The text to display for test cases "edit" links. cfg['testcases-edit-link-display'] = 'edit' -- cfg['testcases-run-link-display'] -- The text to display for test cases "run" links. cfg['testcases-run-link-display'] = 'run' -- cfg['testcases-create-link-display'] -- The text to display for test cases "create" links. cfg['testcases-create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Add categories blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['add-categories-blurb'] -- Text to direct users to add categories to the /doc subpage. Not used if the "content" or -- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a -- link to the /doc subpage with a display value of cfg['doc-link-display']. --]] cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.' -- cfg['doc-link-display'] -- The text to display when linking to the /doc subpage. cfg['doc-link-display'] = '/doc' ---------------------------------------------------------------------------------------------------- -- Subpages link configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['subpages-blurb'] -- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a -- display value of cfg['subpages-link-display']. In the English version this blurb is simply -- the link followed by a period, and the link display provides the actual text. --]] cfg['subpages-blurb'] = '$1.' --[[ -- cfg['subpages-link-display'] -- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'], -- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in -- the template namespace, the module namespace, or another namespace. --]] cfg['subpages-link-display'] = 'Subpages of this $1' -- cfg['template-pagetype'] -- The pagetype to display for template pages. cfg['template-pagetype'] = 'template' -- cfg['module-pagetype'] -- The pagetype to display for Lua module pages. cfg['module-pagetype'] = 'module' -- cfg['default-pagetype'] -- The pagetype to display for pages other than templates or Lua modules. cfg['default-pagetype'] = 'page' ---------------------------------------------------------------------------------------------------- -- Doc link configuration ---------------------------------------------------------------------------------------------------- -- cfg['doc-subpage'] -- The name of the subpage typically used for documentation pages. cfg['doc-subpage'] = 'doc' -- cfg['docpage-preload'] -- Preload file for template documentation pages in all namespaces. cfg['docpage-preload'] = 'Template:Documentation/preload' -- cfg['module-preload'] -- Preload file for Lua module documentation pages. cfg['module-preload'] = 'Template:Documentation/preload-module-doc' ---------------------------------------------------------------------------------------------------- -- HTML and CSS configuration ---------------------------------------------------------------------------------------------------- -- cfg['templatestyles'] -- The name of the TemplateStyles page where CSS is kept. -- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed. cfg['templatestyles'] = 'Module:Documentation/styles.css' -- cfg['container'] -- Class which can be used to set flex or grid CSS on the -- two child divs documentation and documentation-metadata cfg['container'] = 'documentation-container' -- cfg['main-div-classes'] -- Classes added to the main HTML "div" tag. cfg['main-div-classes'] = 'documentation' -- cfg['main-div-heading-class'] -- Class for the main heading for templates and modules and assoc. talk spaces cfg['main-div-heading-class'] = 'documentation-heading' -- cfg['start-box-class'] -- Class for the start box cfg['start-box-class'] = 'documentation-startbox' -- cfg['start-box-link-classes'] -- Classes used for the [view][edit][history] or [create] links in the start box. -- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]] cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks' -- cfg['end-box-class'] -- Class for the end box. cfg['end-box-class'] = 'documentation-metadata' -- cfg['end-box-plainlinks'] -- Plainlinks cfg['end-box-plainlinks'] = 'plainlinks' -- cfg['toolbar-class'] -- Class added for toolbar links. cfg['toolbar-class'] = 'documentation-toolbar' -- cfg['clear'] -- Just used to clear things. cfg['clear'] = 'documentation-clear' ---------------------------------------------------------------------------------------------------- -- Tracking category configuration ---------------------------------------------------------------------------------------------------- -- cfg['display-strange-usage-category'] -- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage -- or a /testcases subpage. This should be a boolean value (either true or false). cfg['display-strange-usage-category'] = true -- cfg['strange-usage-category'] -- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a -- /doc subpage or a /testcases subpage. cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage' --[[ ---------------------------------------------------------------------------------------------------- -- End configuration -- -- Don't edit anything below this line. ---------------------------------------------------------------------------------------------------- --]] return cfg 71b68ed73088f1a59d61acf06bbee9fde6677f03 Module:TableTools 828 185 363 2022-01-31T13:08:18Z beeleth>MSGJ 0 updates/fixes requested by [[User:Uzume]] Scribunto text/plain ------------------------------------------------------------------------------------ -- TableTools -- -- -- -- This module includes a number of functions for dealing with Lua tables. -- -- It is a meta-module, meant to be called from other Lua modules, and should not -- -- be called directly from #invoke. -- ------------------------------------------------------------------------------------ local libraryUtil = require('libraryUtil') local p = {} -- Define often-used variables and functions. local floor = math.floor local infinity = math.huge local checkType = libraryUtil.checkType local checkTypeMulti = libraryUtil.checkTypeMulti ------------------------------------------------------------------------------------ -- isPositiveInteger -- -- This function returns true if the given value is a positive integer, and false -- if not. Although it doesn't operate on tables, it is included here as it is -- useful for determining whether a given table key is in the array part or the -- hash part of a table. ------------------------------------------------------------------------------------ function p.isPositiveInteger(v) return type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity end ------------------------------------------------------------------------------------ -- isNan -- -- This function returns true if the given number is a NaN value, and false if -- not. Although it doesn't operate on tables, it is included here as it is useful -- for determining whether a value can be a valid table key. Lua will generate an -- error if a NaN is used as a table key. ------------------------------------------------------------------------------------ function p.isNan(v) return type(v) == 'number' and v ~= v end ------------------------------------------------------------------------------------ -- shallowClone -- -- This returns a clone of a table. The value returned is a new table, but all -- subtables and functions are shared. Metamethods are respected, but the returned -- table will have no metatable of its own. ------------------------------------------------------------------------------------ function p.shallowClone(t) checkType('shallowClone', 1, t, 'table') local ret = {} for k, v in pairs(t) do ret[k] = v end return ret end ------------------------------------------------------------------------------------ -- removeDuplicates -- -- This removes duplicate values from an array. Non-positive-integer keys are -- ignored. The earliest value is kept, and all subsequent duplicate values are -- removed, but otherwise the array order is unchanged. ------------------------------------------------------------------------------------ function p.removeDuplicates(arr) checkType('removeDuplicates', 1, arr, 'table') local isNan = p.isNan local ret, exists = {}, {} for _, v in ipairs(arr) do if isNan(v) then -- NaNs can't be table keys, and they are also unique, so we don't need to check existence. ret[#ret + 1] = v else if not exists[v] then ret[#ret + 1] = v exists[v] = true end end end return ret end ------------------------------------------------------------------------------------ -- numKeys -- -- This takes a table and returns an array containing the numbers of any numerical -- keys that have non-nil values, sorted in numerical order. ------------------------------------------------------------------------------------ function p.numKeys(t) checkType('numKeys', 1, t, 'table') local isPositiveInteger = p.isPositiveInteger local nums = {} for k in pairs(t) do if isPositiveInteger(k) then nums[#nums + 1] = k end end table.sort(nums) return nums end ------------------------------------------------------------------------------------ -- affixNums -- -- This takes a table and returns an array containing the numbers of keys with the -- specified prefix and suffix. For example, for the table -- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will return -- {1, 3, 6}. ------------------------------------------------------------------------------------ function p.affixNums(t, prefix, suffix) checkType('affixNums', 1, t, 'table') checkType('affixNums', 2, prefix, 'string', true) checkType('affixNums', 3, suffix, 'string', true) local function cleanPattern(s) -- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally. return s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1') end prefix = prefix or '' suffix = suffix or '' prefix = cleanPattern(prefix) suffix = cleanPattern(suffix) local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$' local nums = {} for k in pairs(t) do if type(k) == 'string' then local num = mw.ustring.match(k, pattern) if num then nums[#nums + 1] = tonumber(num) end end end table.sort(nums) return nums end ------------------------------------------------------------------------------------ -- numData -- -- Given a table with keys like {"foo1", "bar1", "foo2", "baz2"}, returns a table -- of subtables in the format -- {[1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'}}. -- Keys that don't end with an integer are stored in a subtable named "other". The -- compress option compresses the table so that it can be iterated over with -- ipairs. ------------------------------------------------------------------------------------ function p.numData(t, compress) checkType('numData', 1, t, 'table') checkType('numData', 2, compress, 'boolean', true) local ret = {} for k, v in pairs(t) do local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$') if num then num = tonumber(num) local subtable = ret[num] or {} if prefix == '' then -- Positional parameters match the blank string; put them at the start of the subtable instead. prefix = 1 end subtable[prefix] = v ret[num] = subtable else local subtable = ret.other or {} subtable[k] = v ret.other = subtable end end if compress then local other = ret.other ret = p.compressSparseArray(ret) ret.other = other end return ret end ------------------------------------------------------------------------------------ -- compressSparseArray -- -- This takes an array with one or more nil values, and removes the nil values -- while preserving the order, so that the array can be safely traversed with -- ipairs. ------------------------------------------------------------------------------------ function p.compressSparseArray(t) checkType('compressSparseArray', 1, t, 'table') local ret = {} local nums = p.numKeys(t) for _, num in ipairs(nums) do ret[#ret + 1] = t[num] end return ret end ------------------------------------------------------------------------------------ -- sparseIpairs -- -- This is an iterator for sparse arrays. It can be used like ipairs, but can -- handle nil values. ------------------------------------------------------------------------------------ function p.sparseIpairs(t) checkType('sparseIpairs', 1, t, 'table') local nums = p.numKeys(t) local i = 0 local lim = #nums return function () i = i + 1 if i <= lim then local key = nums[i] return key, t[key] else return nil, nil end end end ------------------------------------------------------------------------------------ -- size -- -- This returns the size of a key/value pair table. It will also work on arrays, -- but for arrays it is more efficient to use the # operator. ------------------------------------------------------------------------------------ function p.size(t) checkType('size', 1, t, 'table') local i = 0 for _ in pairs(t) do i = i + 1 end return i end local function defaultKeySort(item1, item2) -- "number" < "string", so numbers will be sorted before strings. local type1, type2 = type(item1), type(item2) if type1 ~= type2 then return type1 < type2 elseif type1 == 'table' or type1 == 'boolean' or type1 == 'function' then return tostring(item1) < tostring(item2) else return item1 < item2 end end ------------------------------------------------------------------------------------ -- keysToList -- -- Returns an array of the keys in a table, sorted using either a default -- comparison function or a custom keySort function. ------------------------------------------------------------------------------------ function p.keysToList(t, keySort, checked) if not checked then checkType('keysToList', 1, t, 'table') checkTypeMulti('keysToList', 2, keySort, {'function', 'boolean', 'nil'}) end local arr = {} local index = 1 for k in pairs(t) do arr[index] = k index = index + 1 end if keySort ~= false then keySort = type(keySort) == 'function' and keySort or defaultKeySort table.sort(arr, keySort) end return arr end ------------------------------------------------------------------------------------ -- sortedPairs -- -- Iterates through a table, with the keys sorted using the keysToList function. -- If there are only numerical keys, sparseIpairs is probably more efficient. ------------------------------------------------------------------------------------ function p.sortedPairs(t, keySort) checkType('sortedPairs', 1, t, 'table') checkType('sortedPairs', 2, keySort, 'function', true) local arr = p.keysToList(t, keySort, true) local i = 0 return function () i = i + 1 local key = arr[i] if key ~= nil then return key, t[key] else return nil, nil end end end ------------------------------------------------------------------------------------ -- isArray -- -- Returns true if the given value is a table and all keys are consecutive -- integers starting at 1. ------------------------------------------------------------------------------------ function p.isArray(v) if type(v) ~= 'table' then return false end local i = 0 for _ in pairs(v) do i = i + 1 if v[i] == nil then return false end end return true end ------------------------------------------------------------------------------------ -- isArrayLike -- -- Returns true if the given value is iterable and all keys are consecutive -- integers starting at 1. ------------------------------------------------------------------------------------ function p.isArrayLike(v) if not pcall(pairs, v) then return false end local i = 0 for _ in pairs(v) do i = i + 1 if v[i] == nil then return false end end return true end ------------------------------------------------------------------------------------ -- invert -- -- Transposes the keys and values in an array. For example, {"a", "b", "c"} -> -- {a = 1, b = 2, c = 3}. Duplicates are not supported (result values refer to -- the index of the last duplicate) and NaN values are ignored. ------------------------------------------------------------------------------------ function p.invert(arr) checkType("invert", 1, arr, "table") local isNan = p.isNan local map = {} for i, v in ipairs(arr) do if not isNan(v) then map[v] = i end end return map end ------------------------------------------------------------------------------------ -- listToSet -- -- Creates a set from the array part of the table. Indexing the set by any of the -- values of the array returns true. For example, {"a", "b", "c"} -> -- {a = true, b = true, c = true}. NaN values are ignored as Lua considers them -- never equal to any value (including other NaNs or even themselves). ------------------------------------------------------------------------------------ function p.listToSet(arr) checkType("listToSet", 1, arr, "table") local isNan = p.isNan local set = {} for _, v in ipairs(arr) do if not isNan(v) then set[v] = true end end return set end ------------------------------------------------------------------------------------ -- deepCopy -- -- Recursive deep copy function. Preserves identities of subtables. ------------------------------------------------------------------------------------ local function _deepCopy(orig, includeMetatable, already_seen) -- Stores copies of tables indexed by the original table. already_seen = already_seen or {} local copy = already_seen[orig] if copy ~= nil then return copy end if type(orig) == 'table' then copy = {} for orig_key, orig_value in pairs(orig) do copy[_deepCopy(orig_key, includeMetatable, already_seen)] = _deepCopy(orig_value, includeMetatable, already_seen) end already_seen[orig] = copy if includeMetatable then local mt = getmetatable(orig) if mt ~= nil then local mt_copy = _deepCopy(mt, includeMetatable, already_seen) setmetatable(copy, mt_copy) already_seen[mt] = mt_copy end end else -- number, string, boolean, etc copy = orig end return copy end function p.deepCopy(orig, noMetatable, already_seen) checkType("deepCopy", 3, already_seen, "table", true) return _deepCopy(orig, not noMetatable, already_seen) end ------------------------------------------------------------------------------------ -- sparseConcat -- -- Concatenates all values in the table that are indexed by a number, in order. -- sparseConcat{a, nil, c, d} => "acd" -- sparseConcat{nil, b, c, d} => "bcd" ------------------------------------------------------------------------------------ function p.sparseConcat(t, sep, i, j) local arr = {} local arr_i = 0 for _, v in p.sparseIpairs(t) do arr_i = arr_i + 1 arr[arr_i] = v end return table.concat(arr, sep, i, j) end ------------------------------------------------------------------------------------ -- length -- -- Finds the length of an array, or of a quasi-array with keys such as "data1", -- "data2", etc., using an exponential search algorithm. It is similar to the -- operator #, but may return a different value when there are gaps in the array -- portion of the table. Intended to be used on data loaded with mw.loadData. For -- other tables, use #. -- Note: #frame.args in frame object always be set to 0, regardless of the number -- of unnamed template parameters, so use this function for frame.args. ------------------------------------------------------------------------------------ function p.length(t, prefix) -- requiring module inline so that [[Module:Exponential search]] which is -- only needed by this one function doesn't get millions of transclusions local expSearch = require("Module:Exponential search") checkType('length', 1, t, 'table') checkType('length', 2, prefix, 'string', true) return expSearch(function (i) local key if prefix then key = prefix .. tostring(i) else key = i end return t[key] ~= nil end) or 0 end ------------------------------------------------------------------------------------ -- inArray -- -- Returns true if valueToFind is a member of the array, and false otherwise. ------------------------------------------------------------------------------------ function p.inArray(arr, valueToFind) checkType("inArray", 1, arr, "table") -- if valueToFind is nil, error? for _, v in ipairs(arr) do if v == valueToFind then return true end end return false end return p 085e7094ac84eb0132ee65822cf3f69cd8ba3d81 Template:Documentation subpage 10 216 431 2022-02-09T04:09:32Z beeleth>Bsherr 0 semantic emphasis, shortening emphasized phrase wikitext text/x-wiki <includeonly><!-- -->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}} | <!--(this template has been transcluded on a /doc or /{{{override}}} page)--> </includeonly><!-- -->{{#ifeq:{{{doc-notice|show}}} |show | {{Mbox | type = notice | style = margin-bottom:1.0em; | image = [[File:Edit-copy green.svg|40px|alt=|link=]] | text = {{strong|This is a [[Wikipedia:Template documentation|documentation]] [[Wikipedia:Subpages|subpage]]}} for {{terminate sentence|{{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}}}<br />It contains usage information, [[Wikipedia:Categorization|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} |{{#ifeq:{{SUBJECTSPACE}} |{{ns:User}} |{{lc:{{SUBJECTSPACE}}}} template page |{{#if:{{SUBJECTSPACE}} |{{lc:{{SUBJECTSPACE}}}} page|article}}}}}}}}. }} }}<!-- -->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!-- -->{{#if:{{{inhibit|}}} |<!--(don't categorize)--> | <includeonly><!-- -->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}} | [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]] | [[Category:Documentation subpages without corresponding pages]] }}<!-- --></includeonly> }}<!-- (completing initial #ifeq: at start of template:) --><includeonly> | <!--(this template has not been transcluded on a /doc or /{{{override}}} page)--> }}<!-- --></includeonly><noinclude>{{Documentation}}</noinclude> 932915be87123dcf74687ffca846a3130a6a52af Module:Check for unknown parameters 828 181 355 2022-02-21T05:24:13Z beeleth>BusterD 0 Changed protection settings for "[[Module:Check for unknown parameters]]": [[WP:High-risk templates|Highly visible template]]; requested at [[WP:RfPP]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) Scribunto text/plain -- This module may be used to compare the arguments passed to the parent -- with a list of arguments, returning a specified result if an argument is -- not on the list local p = {} local function trim(s) return s:match('^%s*(.-)%s*$') end local function isnotempty(s) return s and s:match('%S') end local function clean(text) -- Return text cleaned for display and truncated if too long. -- Strip markers are replaced with dummy text representing the original wikitext. local pos, truncated local function truncate(text) if truncated then return '' end if mw.ustring.len(text) > 25 then truncated = true text = mw.ustring.sub(text, 1, 25) .. '...' end return mw.text.nowiki(text) end local parts = {} for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do pos = remainder table.insert(parts, truncate(before) .. '&lt;' .. tag .. '&gt;...&lt;/' .. tag .. '&gt;') end table.insert(parts, truncate(text:sub(pos or 1))) return table.concat(parts) end function p._check(args, pargs) if type(args) ~= "table" or type(pargs) ~= "table" then -- TODO: error handling return end -- create the list of known args, regular expressions, and the return string local knownargs = {} local regexps = {} for k, v in pairs(args) do if type(k) == 'number' then v = trim(v) knownargs[v] = 1 elseif k:find('^regexp[1-9][0-9]*$') then table.insert(regexps, '^' .. v .. '$') end end -- loop over the parent args, and make sure they are on the list local ignoreblank = isnotempty(args['ignoreblank']) local showblankpos = isnotempty(args['showblankpositional']) local values = {} for k, v in pairs(pargs) do if type(k) == 'string' and knownargs[k] == nil then local knownflag = false for _, regexp in ipairs(regexps) do if mw.ustring.match(k, regexp) then knownflag = true break end end if not knownflag and ( not ignoreblank or isnotempty(v) ) then table.insert(values, clean(k)) end elseif type(k) == 'number' and knownargs[tostring(k)] == nil then local knownflag = false for _, regexp in ipairs(regexps) do if mw.ustring.match(tostring(k), regexp) then knownflag = true break end end if not knownflag and ( showblankpos or isnotempty(v) ) then table.insert(values, k .. ' = ' .. clean(v)) end end end -- add results to the output tables local res = {} if #values > 0 then local unknown_text = args['unknown'] or 'Found _VALUE_, ' if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then local preview_text = args['preview'] if isnotempty(preview_text) then preview_text = require('Module:If preview')._warning({preview_text}) elseif preview == nil then preview_text = unknown_text end unknown_text = preview_text end for _, v in pairs(values) do -- Fix odd bug for | = which gets stripped to the empty string and -- breaks category links if v == '' then v = ' ' end -- avoid error with v = 'example%2' ("invalid capture index") local r = unknown_text:gsub('_VALUE_', {_VALUE_ = v}) table.insert(res, r) end end return table.concat(res) end function p.check(frame) local args = frame.args local pargs = frame:getParent().args return p._check(args, pargs) end return p 93db6d115d4328d2a5148bb42959105e367b663e Module:Effective protection expiry 828 193 381 2022-02-23T10:59:29Z beeleth>Xaosflux 0 Changed protection settings for "[[Module:Effective protection expiry]]": used in the mediawiki interface / match [[Module:Effective protection level]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) Scribunto text/plain local p = {} -- Returns the expiry of a restriction of an action on a given title, or unknown if it cannot be known. -- If no title is specified, the title of the page being displayed is used. function p._main(action, pagename) local title if type(pagename) == 'table' and pagename.prefixedText then title = pagename elseif pagename then title = mw.title.new(pagename) else title = mw.title.getCurrentTitle() end pagename = title.prefixedText if action == 'autoreview' then local stabilitySettings = mw.ext.FlaggedRevs.getStabilitySettings(title) return stabilitySettings and stabilitySettings.expiry or 'unknown' elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' then error( 'First parameter must be one of edit, move, create, upload, autoreview', 2 ) end local rawExpiry = mw.getCurrentFrame():callParserFunction('PROTECTIONEXPIRY', action, pagename) if rawExpiry == 'infinity' then return 'infinity' elseif rawExpiry == '' then return 'unknown' else local year, month, day, hour, minute, second = rawExpiry:match( '^(%d%d%d%d)(%d%d)(%d%d)(%d%d)(%d%d)(%d%d)$' ) if year then return string.format( '%s-%s-%sT%s:%s:%s', year, month, day, hour, minute, second ) else error('internal error in Module:Effective protection expiry; malformed expiry timestamp') end end end setmetatable(p, { __index = function(t, k) return function(frame) return t._main(k, frame.args[1]) end end }) return p 9a8c58dc2667232ed08a9b206a5d89ca8150312b Module:Template link general 828 188 369 2022-03-08T08:30:51Z beeleth>Primefac 0 update from sandbox - fixes to _show_result and adding _expand Scribunto text/plain -- This implements Template:Tlg local getArgs = require('Module:Arguments').getArgs local p = {} -- Is a string non-empty? local function _ne(s) return s ~= nil and s ~= "" end local nw = mw.text.nowiki local function addTemplate(s) local i, _ = s:find(':', 1, true) if i == nil then return 'Template:' .. s end local ns = s:sub(1, i - 1) if ns == '' or mw.site.namespaces[ns] then return s else return 'Template:' .. s end end local function trimTemplate(s) local needle = 'template:' if s:sub(1, needle:len()):lower() == needle then return s:sub(needle:len() + 1) else return s end end local function linkTitle(args) if _ne(args.nolink) then return args['1'] end local titleObj local titlePart = '[[' if args['1'] then -- This handles :Page and other NS titleObj = mw.title.new(args['1'], 'Template') else titleObj = mw.title.getCurrentTitle() end titlePart = titlePart .. (titleObj ~= nil and titleObj.fullText or addTemplate(args['1'])) local textPart = args.alttext if not _ne(textPart) then if titleObj ~= nil then textPart = titleObj:inNamespace("Template") and args['1'] or titleObj.fullText else -- redlink textPart = args['1'] end end if _ne(args.subst) then -- HACK: the ns thing above is probably broken textPart = 'subst:' .. textPart end if _ne(args.brace) then textPart = nw('{{') .. textPart .. nw('}}') elseif _ne(args.braceinside) then textPart = nw('{') .. textPart .. nw('}') end titlePart = titlePart .. '|' .. textPart .. ']]' if _ne(args.braceinside) then titlePart = nw('{') .. titlePart .. nw('}') end return titlePart end function p.main(frame) local args = getArgs(frame, { trim = true, removeBlanks = false }) return p._main(args) end function p._main(args) local bold = _ne(args.bold) or _ne(args.boldlink) or _ne(args.boldname) local italic = _ne(args.italic) or _ne(args.italics) local dontBrace = _ne(args.brace) or _ne(args.braceinside) local code = _ne(args.code) or _ne(args.tt) local show_result = _ne(args._show_result) local expand = _ne(args._expand) -- Build the link part local titlePart = linkTitle(args) if bold then titlePart = "'''" .. titlePart .. "'''" end if _ne(args.nowrapname) then titlePart = '<span class="nowrap">' .. titlePart .. '</span>' end -- Build the arguments local textPart = "" local textPartBuffer = "&#124;" local codeArguments = {} local codeArgumentsString = "" local i = 2 local j = 1 while args[i] do local val = args[i] if val ~= "" then if _ne(args.nowiki) then -- Unstrip nowiki tags first because calling nw on something that already contains nowiki tags will -- mangle the nowiki strip marker and result in literal UNIQ...QINU showing up val = nw(mw.text.unstripNoWiki(val)) end local k, v = string.match(val, "(.*)=(.*)") if not k then codeArguments[j] = val j = j + 1 else codeArguments[k] = v end codeArgumentsString = codeArgumentsString .. textPartBuffer .. val if italic then val = '<span style="font-style:italic;">' .. val .. '</span>' end textPart = textPart .. textPartBuffer .. val end i = i + 1 end -- final wrap local ret = titlePart .. textPart if not dontBrace then ret = nw('{{') .. ret .. nw('}}') end if _ne(args.a) then ret = nw('*') .. '&nbsp;' .. ret end if _ne(args.kbd) then ret = '<kbd>' .. ret .. '</kbd>' end if code then ret = '<code>' .. ret .. '</code>' elseif _ne(args.plaincode) then ret = '<code style="border:none;background:transparent;">' .. ret .. '</code>' end if _ne(args.nowrap) then ret = '<span class="nowrap">' .. ret .. '</span>' end --[[ Wrap as html?? local span = mw.html.create('span') span:wikitext(ret) --]] if _ne(args.debug) then ret = ret .. '\n<pre>' .. mw.text.encode(mw.dumpObject(args)) .. '</pre>' end if show_result then local result = mw.getCurrentFrame():expandTemplate{title = addTemplate(args[1]), args = codeArguments} ret = ret .. " → " .. result end if expand then local query = mw.text.encode('{{' .. addTemplate(args[1]) .. string.gsub(codeArgumentsString, textPartBuffer, "|") .. '}}') local url = mw.uri.fullUrl('special:ExpandTemplates', 'wpInput=' .. query) mw.log() ret = ret .. " [" .. tostring(url) .. "]" end return ret end return p c7307fa3959d308a2dd7fd2f5009c1ce6db3d122 Module:InfoboxImage 828 322 637 2022-03-13T19:18:18Z vast>WOSlinker 0 add class param from sandbox as per edit request Scribunto text/plain -- Inputs: -- image - Can either be a bare filename (with or without the File:/Image: prefix) or a fully formatted image link -- page - page to display for multipage images (DjVu) -- size - size to display the image -- maxsize - maximum size for image -- sizedefault - default size to display the image if size param is blank -- alt - alt text for image -- title - title text for image -- border - set to yes if border -- center - set to yes, if the image has to be centered -- upright - upright image param -- suppressplaceholder - if yes then checks to see if image is a placeholder and suppresses it -- link - page to visit when clicking on image -- class - HTML classes to add to the image -- Outputs: -- Formatted image. -- More details available at the "Module:InfoboxImage/doc" page local i = {}; local placeholder_image = { "Blue - Replace this image female.svg", "Blue - Replace this image male.svg", "Female no free image yet.png", "Flag of None (square).svg", "Flag of None.svg", "Flag of.svg", "Green - Replace this image female.svg", "Green - Replace this image male.svg", "Image is needed female.svg", "Image is needed male.svg", "Location map of None.svg", "Male no free image yet.png", "Missing flag.png", "No flag.svg", "No free portrait.svg", "No portrait (female).svg", "No portrait (male).svg", "Red - Replace this image female.svg", "Red - Replace this image male.svg", "Replace this image female (blue).svg", "Replace this image female.svg", "Replace this image male (blue).svg", "Replace this image male.svg", "Silver - Replace this image female.svg", "Silver - Replace this image male.svg", "Replace this image.svg", "Cricket no pic.png", "CarersLogo.gif", "Diagram Needed.svg", "Example.jpg", "Image placeholder.png", "No male portrait.svg", "Nocover-upload.png", "NoDVDcover copy.png", "Noribbon.svg", "No portrait-BFD-test.svg", "Placeholder barnstar ribbon.png", "Project Trains no image.png", "Image-request.png", "Sin bandera.svg", "Sin escudo.svg", "Replace this image - temple.png", "Replace this image butterfly.png", "Replace this image.svg", "Replace this image1.svg", "Resolution angle.png", "Image-No portrait-text-BFD-test.svg", "Insert image here.svg", "No image available.png", "NO IMAGE YET square.png", "NO IMAGE YET.png", "No Photo Available.svg", "No Screenshot.svg", "No-image-available.jpg", "Null.png", "PictureNeeded.gif", "Place holder.jpg", "Unbenannt.JPG", "UploadACopyrightFreeImage.svg", "UploadAnImage.gif", "UploadAnImage.svg", "UploadAnImageShort.svg", "CarersLogo.gif", "Diagram Needed.svg", "No male portrait.svg", "NoDVDcover copy.png", "Placeholder barnstar ribbon.png", "Project Trains no image.png", "Image-request.png", "Noimage.gif", } function i.IsPlaceholder(image) -- change underscores to spaces image = mw.ustring.gsub(image, "_", " "); assert(image ~= nil, 'mw.ustring.gsub(image, "_", " ") must not return nil') -- if image starts with [[ then remove that and anything after | if mw.ustring.sub(image,1,2) == "[[" then image = mw.ustring.sub(image,3); image = mw.ustring.gsub(image, "([^|]*)|.*", "%1"); assert(image ~= nil, 'mw.ustring.gsub(image, "([^|]*)|.*", "%1") must not return nil') end -- Trim spaces image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1'); assert(image ~= nil, "mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1') must not return nil") -- remove prefix if exists local allNames = mw.site.namespaces[6].aliases allNames[#allNames + 1] = mw.site.namespaces[6].name allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName for i, name in ipairs(allNames) do if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then image = mw.ustring.sub(image, mw.ustring.len(name) + 2); break end end -- Trim spaces image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1'); -- capitalise first letter image = mw.ustring.upper(mw.ustring.sub(image,1,1)) .. mw.ustring.sub(image,2); for i,j in pairs(placeholder_image) do if image == j then return true end end return false end function i.InfoboxImage(frame) local image = frame.args["image"]; if image == "" or image == nil then return ""; end if image == "&nbsp;" then return image; end if frame.args["suppressplaceholder"] ~= "no" then if i.IsPlaceholder(image) == true then return ""; end end if mw.ustring.lower(mw.ustring.sub(image,1,5)) == "http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "[http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[[http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "https:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[https:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,8)) == "[[https:" then return ""; end if mw.ustring.sub(image,1,2) == "[[" then -- search for thumbnail images and add to tracking cat if found local cat = ""; if mw.title.getCurrentTitle().namespace == 0 and (mw.ustring.find(image, "|%s*thumb%s*[|%]]") or mw.ustring.find(image, "|%s*thumbnail%s*[|%]]")) then cat = "[[Category:Pages using infoboxes with thumbnail images]]"; end return image .. cat; elseif mw.ustring.sub(image,1,2) == "{{" and mw.ustring.sub(image,1,3) ~= "{{{" then return image; elseif mw.ustring.sub(image,1,1) == "<" then return image; elseif mw.ustring.sub(image,1,5) == mw.ustring.char(127).."UNIQ" then -- Found strip marker at begining, so pass don't process at all return image; elseif mw.ustring.sub(image,4,9) == "`UNIQ-" then -- Found strip marker at begining, so pass don't process at all return image; else local result = ""; local page = frame.args["page"]; local size = frame.args["size"]; local maxsize = frame.args["maxsize"]; local sizedefault = frame.args["sizedefault"]; local alt = frame.args["alt"]; local link = frame.args["link"]; local title = frame.args["title"]; local border = frame.args["border"]; local upright = frame.args["upright"] or ""; local thumbtime = frame.args["thumbtime"] or ""; local center = frame.args["center"]; local class = frame.args["class"]; -- remove prefix if exists local allNames = mw.site.namespaces[6].aliases allNames[#allNames + 1] = mw.site.namespaces[6].name allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName for i, name in ipairs(allNames) do if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then image = mw.ustring.sub(image, mw.ustring.len(name) + 2); break end end if maxsize ~= "" and maxsize ~= nil then -- if no sizedefault then set to maxsize if sizedefault == "" or sizedefault == nil then sizedefault = maxsize end -- check to see if size bigger than maxsize if size ~= "" and size ~= nil then local sizenumber = tonumber(mw.ustring.match(size,"%d*")) or 0; local maxsizenumber = tonumber(mw.ustring.match(maxsize,"%d*")) or 0; if sizenumber>maxsizenumber and maxsizenumber>0 then size = maxsize; end end end -- add px to size if just a number if (tonumber(size) or 0) > 0 then size = size .. "px"; end -- add px to sizedefault if just a number if (tonumber(sizedefault) or 0) > 0 then sizedefault = sizedefault .. "px"; end result = "[[File:" .. image; if page ~= "" and page ~= nil then result = result .. "|page=" .. page; end if size ~= "" and size ~= nil then result = result .. "|" .. size; elseif sizedefault ~= "" and sizedefault ~= nil then result = result .. "|" .. sizedefault; else result = result .. "|frameless"; end if center == "yes" then result = result .. "|center" end if alt ~= "" and alt ~= nil then result = result .. "|alt=" .. alt; end if link ~= "" and link ~= nil then result = result .. "|link=" .. link; end if border == "yes" then result = result .. "|border"; end if upright == "yes" then result = result .. "|upright"; elseif upright ~= "" then result = result .. "|upright=" .. upright; end if thumbtime ~= "" then result = result .. "|thumbtime=" .. thumbtime; end if class ~= nil and class ~= "" then result = result .. "|class=" .. class; end -- if alt value is a keyword then do not use as a description if alt == "thumbnail" or alt == "thumb" or alt == "frameless" or alt == "left" or alt == "center" or alt == "right" or alt == "upright" or alt == "border" or mw.ustring.match(alt or "", '^[0-9]*px$', 1) ~= nil then alt = nil; end if title ~= "" and title ~= nil then -- does title param contain any templatestyles? If yes then set to blank. if mw.ustring.match(frame:preprocess(title), 'UNIQ%-%-templatestyles', 1) ~= nil then title = nil; end end if title ~= "" and title ~= nil then result = result .. "|" .. title; end result = result .. "]]"; return result; end end return i; 0ee5fe75ba239fc5c9cedc81ca11bdc0be068542 Template:Documentation 10 5 421 8 2022-03-29T02:14:34Z beeleth>Bsherr 0 consistent with new substitution template format wikitext text/x-wiki {{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude> <!-- Add categories to the /doc subpage --> </noinclude> 9e62b964e96c4e3d478edecbfcb3c0338ae8a276 9 8 2022-11-10T22:14:25Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly>{| class="article-table plainlinks" style="width:100%;" role="complementary" |- style="font-size:18px;" ! style="padding:0px;" | <div style="width:100%; padding:3px 0px; text-align:center;" class="color1">Template documentation</div> |- | ''Note: portions of the template sample may not be visible without values provided.'' |- | View or edit [[{{{1|Template:{{PAGENAMEE}}/doc}}}|this documentation]]. ([[Template:Documentation|About template documentation]]) |- | Editors can experiment in this template's [{{fullurl:{{FULLPAGENAMEE}}/sandbox|action=edit}} sandbox] and [{{fullurl:{{FULLPAGENAMEE}}/testcases}} test case] pages. |} <div style="margin:0 1em;"> {{{{{1|{{PAGENAME}}/doc}}}}}</div></includeonly><noinclude>{{Documentation}}[[Category:Documentation templates]]</noinclude> ee98b7264ecdfefae4fda4e94a64c1d0e275ee55 Template:Module rating 10 238 475 2022-06-03T15:10:23Z beeleth>The Anome 0 Reverted edits by [[Special:Contribs/Dawn PScLim|Dawn PScLim]] ([[User talk:Dawn PScLim|talk]]) to last version by Alexis Jazz wikitext text/x-wiki <includeonly>{{#ifeq:{{SUBPAGENAME}}|doc|<!--do not show protection level of the module on the doc page, use the second and optionally third parameter if the doc page is also protected -->{{#if:{{{2|}}}|{{Pp|{{{2}}}|action={{{3|}}}}}}}|{{Module other|{{ombox | type = notice | image = {{#switch: {{{1|}}} | pre-alpha | prealpha | pa = [[File:Ambox warning blue construction.svg|40x40px|link=|alt=Pre-alpha]] | alpha | a = [[File:Alpha lowercase.svg|26x26px|link=|alt=Alpha]] | beta | b = [[File:Greek lc beta.svg|40x40px|link=|alt=Beta]] | release | r | general | g = [[File:Green check.svg|40x40px|link=|alt=Ready for use]] | protected | protect | p = [[File:{{#switch:{{#invoke:Effective protection level|edit|{{#switch:{{SUBPAGENAME}}|doc|sandbox={{FULLBASEPAGENAME}}|{{FULLPAGENAME}}}}}}|autoconfirmed=Semi|extendedconfirmed=Extended|accountcreator|templateeditor=Template|#default=Full}}-protection-shackle.svg|40x40px|link=|alt=Protected]] | semiprotected | semiprotect | semi =[[File:Semi-protection-shackle.svg|40x40px|link=|alt=Semi-protected]] }} | style = | textstyle = | text = {{#switch: {{{1|}}} | pre-alpha | prealpha | pa = This module is rated as [[:Category:Modules in pre-alpha development|pre-alpha]]. It is unfinished, and may or may not be in active development. It should not be used from article namespace pages. Modules remain pre-alpha until the original editor (or someone who takes one over if it is abandoned for some time) is satisfied with the basic structure.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in pre-alpha development|{{PAGENAME}}]] }} }} | alpha | a = This module is rated as [[:Category:Modules in alpha|alpha]]. It is ready for third-party input, and may be used on a few pages to see if problems arise, but should be watched. Suggestions for new features or changes in their input and output mechanisms are welcome.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in alpha|{{PAGENAME}}]] }} }} | beta | b = This module is rated as [[:Category:Modules in beta|beta]], and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in beta|{{PAGENAME}}]] }} }} | release | r | general | g = This module is rated as [[:Category:Modules for general use|ready for general use]]. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by [[Wikipedia:Template sandbox and test cases|sandbox testing]] rather than repeated trial-and-error editing.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules for general use|{{PAGENAME}}]] }} }} | protected | protect | p = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[Wikipedia:Protection policy|protected]] from editing.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }} }} | semiprotected | semiprotect | semi = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[WP:SEMI|semi-protected]] from editing.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }} }} | #default = {{error|Module rating is invalid or not specified.}} }} }}|{{error|Error: {{tl|Module rating}} must be placed in the Module namespace.}} [[Category:Pages with templates in the wrong namespace]]|demospace={{{demospace|<noinclude>module</noinclude>}}}}}}}</includeonly><noinclude> {{module rating|release|nocat=true|demospace=module}} {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go in Wikidata. --> </noinclude> bbd244b3ea2e13ec4c1c810ae44f2f3789a93efc Module:High-use 828 222 443 2022-06-12T23:44:07Z beeleth>NguoiDungKhongDinhDanh 0 Comma should not be bolded (via [[:m:User:NguoiDungKhongDinhDanh/CodeAjaxEditor.js|CAE]]) Scribunto text/plain local p = {} -- _fetch looks at the "demo" argument. local _fetch = require('Module:Transclusion_count').fetch local yesno = require('Module:Yesno') function p.num(frame, count) if count == nil then if yesno(frame.args['fetch']) == false then if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end else count = _fetch(frame) end end -- Build output string local return_value = "" if count == nil then if frame.args[1] == "risk" then return_value = "a very large number of" else return_value = "many" end else -- Use 2 significant figures for smaller numbers and 3 for larger ones local sigfig = 2 if count >= 100000 then sigfig = 3 end -- Prepare to round to appropriate number of sigfigs local f = math.floor(math.log10(count)) - sigfig + 1 -- Round and insert "approximately" or "+" when appropriate if (frame.args[2] == "yes") or (mw.ustring.sub(frame.args[1],-1) == "+") then -- Round down return_value = string.format("%s+", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) ) * (10^(f))) ) else -- Round to nearest return_value = string.format("approximately&#x20;%s", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) + 0.5) * (10^(f))) ) end -- Insert percentage of pages if that is likely to be >= 1% and when |no-percent= not set to yes if count and count > 250000 and not yesno (frame:getParent().args['no-percent']) then local percent = math.floor( ( (count/frame:callParserFunction('NUMBEROFPAGES', 'R') ) * 100) + 0.5) if percent >= 1 then return_value = string.format("%s&#x20;pages, or roughly %s%% of all", return_value, percent) end end end return return_value end -- Actions if there is a large (greater than or equal to 100,000) transclusion count function p.risk(frame) local return_value = "" if frame.args[1] == "risk" then return_value = "risk" else local count = _fetch(frame) if count and count >= 100000 then return_value = "risk" end end return return_value end function p.text(frame, count) -- Only show the information about how this template gets updated if someone -- is actually editing the page and maybe trying to update the count. local bot_text = (frame:preprocess("{{REVISIONID}}") == "") and "\n\n----\n'''Preview message''': Transclusion count updated automatically ([[Template:High-use/doc#Technical details|see documentation]])." or '' if count == nil then if yesno(frame.args['fetch']) == false then if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end else count = _fetch(frame) end end local title = mw.title.getCurrentTitle() if title.subpageText == "doc" or title.subpageText == "sandbox" then title = title.basePageTitle end local systemMessages = frame.args['system'] if frame.args['system'] == '' then systemMessages = nil end -- This retrieves the project URL automatically to simplify localiation. local templateCount = ('on [https://linkcount.toolforge.org/index.php?project=%s&page=%s %s pages]'):format( mw.title.getCurrentTitle():fullUrl():gsub('//(.-)/.*', '%1'), mw.uri.encode(title.fullText), p.num(frame, count)) local used_on_text = "'''This " .. (mw.title.getCurrentTitle().namespace == 828 and "Lua module" or "template") .. ' is used '; if systemMessages then used_on_text = used_on_text .. systemMessages .. ((count and count > 2000) and ("''', and " .. templateCount) or ("'''")) else used_on_text = used_on_text .. templateCount .. "'''" end local sandbox_text = ("%s's [[%s/sandbox|/sandbox]] or [[%s/testcases|/testcases]] subpages, or in your own [[%s]]. "):format( (mw.title.getCurrentTitle().namespace == 828 and "module" or "template"), title.fullText, title.fullText, mw.title.getCurrentTitle().namespace == 828 and "Module:Sandbox|module sandbox" or "Wikipedia:User pages#SUB|user subpage" ) local infoArg = frame.args["info"] ~= "" and frame.args["info"] if (systemMessages or frame.args[1] == "risk" or (count and count >= 100000) ) then local info = systemMessages and '.<br/>Changes to it can cause immediate changes to the Wikipedia user interface.' or '.' if infoArg then info = info .. "<br />" .. infoArg end sandbox_text = info .. '<br /> To avoid major disruption' .. (count and count >= 100000 and ' and server load' or '') .. ', any changes should be tested in the ' .. sandbox_text .. 'The tested changes can be added to this page in a single edit. ' else sandbox_text = (infoArg and ('.<br />' .. infoArg .. ' C') or ' and c') .. 'hanges may be widely noticed. Test changes in the ' .. sandbox_text end local discussion_text = systemMessages and 'Please discuss changes ' or 'Consider discussing changes ' if frame.args["2"] and frame.args["2"] ~= "" and frame.args["2"] ~= "yes" then discussion_text = string.format("%sat [[%s]]", discussion_text, frame.args["2"]) else discussion_text = string.format("%son the [[%s|talk page]]", discussion_text, title.talkPageTitle.fullText ) end return used_on_text .. sandbox_text .. discussion_text .. " before implementing them." .. bot_text end function p.main(frame) local count = nil if yesno(frame.args['fetch']) == false then if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end else count = _fetch(frame) end local image = "[[File:Ambox warning yellow.svg|40px|alt=Warning|link=]]" local type_param = "style" local epilogue = '' if frame.args['system'] and frame.args['system'] ~= '' then image = "[[File:Ambox important.svg|40px|alt=Warning|link=]]" type_param = "content" local nocat = frame:getParent().args['nocat'] or frame.args['nocat'] local categorise = (nocat == '' or not yesno(nocat)) if categorise then epilogue = frame:preprocess('{{Sandbox other||{{#switch:{{#invoke:Effective protection level|{{#switch:{{NAMESPACE}}|File=upload|#default=edit}}|{{FULLPAGENAME}}}}|sysop|templateeditor|interfaceadmin=|#default=[[Category:Pages used in system messages needing protection]]}}}}') end elseif (frame.args[1] == "risk" or (count and count >= 100000)) then image = "[[File:Ambox warning orange.svg|40px|alt=Warning|link=]]" type_param = "content" end if frame.args["form"] == "editnotice" then return frame:expandTemplate{ title = 'editnotice', args = { ["image"] = image, ["text"] = p.text(frame, count), ["expiry"] = (frame.args["expiry"] or "") } } .. epilogue else return require('Module:Message box').main('ombox', { type = type_param, image = image, text = p.text(frame, count), expiry = (frame.args["expiry"] or "") }) .. epilogue end end return p e65a49e327a83e27b6a35ceff8dce344edee0840 Template:Clear 10 84 373 166 2022-06-13T15:31:11Z beeleth>Xaosflux 0 Changed protection settings for "[[Template:Clear]]": [[WP:High-risk templates|Highly visible template]]: 3MM+ uses ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)) wikitext text/x-wiki <div style="clear:{{{1|both}}};"></div><noinclude> {{documentation}} </noinclude> 38bab3e3d7fbd3d6800d46556e60bc6bac494d72 Module:Uses TemplateStyles/config 828 241 481 2022-06-16T15:10:06Z beeleth>Pppery 0 Matching reality rather than 2018 me's wishful thinking Scribunto text/plain local cfg = {} -- Don’t touch this line. -- Subpage blacklist: these subpages will not be categorized (except for the -- error category, which is always added if there is an error). -- For example “Template:Foo/doc” matches the `doc = true` rule, so it will have -- no categories. “Template:Foo” and “Template:Foo/documentation” match no rules, -- so they *will* have categories. All rules should be in the -- ['<subpage name>'] = true, -- format. cfg['subpage_blacklist'] = { ['doc'] = true, ['sandbox'] = true, ['sandbox2'] = true, ['testcases'] = true, } -- Sandbox title: if the stylesheet’s title is <template>/<stylesheet>.css, the -- stylesheet’s sandbox is expected to be at <template>/<sandbox_title>/<stylesheet>.css -- Set to nil to disable sandbox links. cfg['sandbox_title'] = 'sandbox' -- Error category: this category is added if the module call contains errors -- (e.g. no stylesheet listed). A category name without namespace, or nil -- to disable categorization (not recommended). cfg['error_category'] = 'Uses TemplateStyles templates with errors' -- Default category: this category is added if no custom category is specified -- in module/template call. A category name without namespace, or nil -- to disable categorization. cfg['default_category'] = 'Templates using TemplateStyles' -- Protection conflict category: this category is added if the protection level -- of any stylesheet is lower than the protection level of the template. A category name -- without namespace, or nil to disable categorization (not recommended). cfg['protection_conflict_category'] = 'Templates using TemplateStyles with a different protection level' -- Hierarchy of protection levels, used to determine whether one protection level is lower -- than another and thus should populate protection_conflict_category. No protection is treated as zero cfg['protection_hierarchy'] = { autoconfirmed = 1, extendedconfirmed = 2, templateeditor = 3, sysop = 4 } -- Padlock pattern: Lua pattern to search on protected stylesheets for, or nil -- to disable padlock check. cfg['padlock_pattern'] = '{{pp-' -- Missing padlock category: this category is added if a protected stylesheet -- doesn’t contain any padlock template (specified by the above Lua pattern). -- A category name without namespace (no nil allowed) if the pattern is not nil, -- unused (and thus may be nil) otherwise. cfg['missing_padlock_category'] = 'Templates using TemplateStyles without padlocks' return cfg -- Don’t touch this line. 58e7a37c44f6ea3f6b8af54a559d696cc7256493 Module:Uses TemplateStyles 828 240 479 2022-06-16T15:13:38Z beeleth>Pppery 0 Matching reality rather than 2018 me's wishful thinking Scribunto text/plain local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local TNT = require('Module:TNT') local p = {} local function format(msg, ...) return TNT.format('I18n/Uses TemplateStyles', msg, ...) end local function getConfig() return mw.loadData('Module:Uses TemplateStyles/config') end local function renderBox(tStyles) local boxArgs = { type = 'notice', small = true, image = string.format('[[File:Farm-Fresh css add.svg|32px|alt=%s]]', format('logo-alt')) } if #tStyles < 1 then boxArgs.text = string.format('<strong class="error">%s</strong>', format('error-emptylist')) else local cfg = getConfig() local tStylesLinks = {} for i, ts in ipairs(tStyles) do local link = string.format('[[:%s]]', ts) local sandboxLink = nil local tsTitle = mw.title.new(ts) if tsTitle and cfg['sandbox_title'] then local tsSandboxTitle = mw.title.new(string.format( '%s:%s/%s/%s', tsTitle.nsText, tsTitle.baseText, cfg['sandbox_title'], tsTitle.subpageText)) if tsSandboxTitle and tsSandboxTitle.exists then sandboxLink = format('sandboxlink', link, ':' .. tsSandboxTitle.prefixedText) end end tStylesLinks[i] = sandboxLink or link end local tStylesList = mList.makeList('bulleted', tStylesLinks) boxArgs.text = format( mw.title.getCurrentTitle():inNamespaces(828,829) and 'header-module' or 'header-template') .. '\n' .. tStylesList end return mMessageBox.main('mbox', boxArgs) end local function renderTrackingCategories(args, tStyles, titleObj) if yesno(args.nocat) then return '' end local cfg = getConfig() local cats = {} -- Error category if #tStyles < 1 and cfg['error_category'] then cats[#cats + 1] = cfg['error_category'] end -- TemplateStyles category titleObj = titleObj or mw.title.getCurrentTitle() if (titleObj.namespace == 10 or titleObj.namespace == 828) and not cfg['subpage_blacklist'][titleObj.subpageText] then local category = args.category or cfg['default_category'] if category then cats[#cats + 1] = category end if not yesno(args.noprotcat) and (cfg['protection_conflict_category'] or cfg['padlock_pattern']) then local currentProt = titleObj.protectionLevels["edit"] and titleObj.protectionLevels["edit"][1] or nil local addedLevelCat = false local addedPadlockCat = false for i, ts in ipairs(tStyles) do local tsTitleObj = mw.title.new(ts) local tsProt = tsTitleObj.protectionLevels["edit"] and tsTitleObj.protectionLevels["edit"][1] or nil if cfg['padlock_pattern'] and tsProt and not addedPadlockCat then local content = tsTitleObj:getContent() if not content:find(cfg['padlock_pattern']) then cats[#cats + 1] = cfg['missing_padlock_category'] addedPadlockCat = true end end if cfg['protection_conflict_category'] and currentProt and tsProt ~= currentProt and not addedLevelCat then currentProt = cfg['protection_hierarchy'][currentProt] or 0 tsProt = cfg['protection_hierarchy'][tsProt] or 0 if tsProt < currentProt then addedLevelCat = true cats[#cats + 1] = cfg['protection_conflict_category'] end end end end end for i, cat in ipairs(cats) do cats[i] = string.format('[[Category:%s]]', cat) end return table.concat(cats) end function p._main(args, cfg) local tStyles = mTableTools.compressSparseArray(args) local box = renderBox(tStyles) local trackingCategories = renderTrackingCategories(args, tStyles) return box .. trackingCategories end function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end return p 71ca57c37849f38e3c5ee30061bdae730963e48e King Beeleth 0 153 306 2022-07-08T23:40:03Z beeleth>Beeleth 0 wikitext text/x-wiki {{General_Character|title1=King Beeleth|real_name=Beeleth<br> Cuperosa the Star-Crossed (formerly)|nickname(s)=Beel<br> Byleth<br> Beleth<br> Bileth|voice_claim=[https://youtu.be/4x40W0Pu3Fc Cecilia姉貴兄貴]|universe=[[Pride of the Peacock Angel]]|title=Hellish King of Love|affiliation=[[Lucifer's Rebellion]]|sector=Felis Sector|orientation=Panromantic asexual|kills=[[Galatea]]|image1=<gallery> Beelethv2wings.png|V2 Beelethv1wings.png|V1 Beelethmaidwings.png|Maid Beelethcasualwings.png|Casual </gallery>|caption1=Design as of 2021|theme_song=[https://youtu.be/LctLOhm2CqU john - 宴]|classification=|birth=First Angel Wave|species=[[Abstract angel|Cherub]] (formerly)<br> [[Abstract demon|Fallen cherub]]|gender=Unspecified<br> <small>• he/him<br> • they/them</small>|residence=[[Heaven]] (formerly)<br> [[Hell]]|relationships=[[Galatea]] (lover)<br> [[Emperor Satan]] (leader)<br> [[Prince Sytri]] (like a son)<br>}} ''Not to be confused with [[BEELETH]], King Beeleth's real-world creator.'' {{Quote|quote=Please... leave me alone.|speaker=Beeleth}} '''King Beeleth''' is one of several Hellish Kings designated by [[Satan]] himself, and he resides over the Felis sector in [[Hell]] along with his subordinates. Much like [[King Bael]], he is known for being miserable; however, he is also known to be cruel but pacifist, which is a strange combination. He is often in hiding to avoid speaking to others. In the list of all [[Pride of the Peacock Angel]] demons, he is the 13<sup>th</sup> total. Prior to [[Lucifer's Rebellion]] in [[Heaven]], he was known as Cuperosa the Star-Crossed and was somewhat kinder because his lover, [[Galatea]], was still alive; however, he was overly possessive of her and was often aggressive to others because of his fear of losing her. == Story == [[File:Cuperosa.png|alt=Cuperosa|left|250x250px|Cuperosa]] === Heaven === Cuperosa was created by [[Kyrie]] during the first wave of angels to represent and protect the very concept of true love. However, he was largely inactive during this period because he did not have anyone to truly love himself; as well as this, most other angels weren't interested in romance among themselves. One of the only other angels he would talk to about such things was [[Lucifer the Morning Star]], who had one-sided but intense feelings towards Kyrie that he could not discuss with others. He was also given a sentient [[Unicorns|divine steed]], [[Duke Amdusias|Amalthyne the Faithful]], which was to always obey him. The two of them were quite friendly and formed a significant trust between one another. One of the only other angels he would speak to was [[Queen Paimonia|Azazel the Watcher]], who provided infinite wisdom to their fellow angels and was comforting to be around. During the Second Angel Wave, many more angels of different types were created for different purposes. Among these angels was the archangel Galatea, who was (not known to those other than Kyrie) created to help serve and guide the creations yet to come. Beeleth fell for her instantly and would never leave her alone, but she found his company quite enjoyable and they quite quickly became partners. === Unrest and Rebellion === When the first [[humans]] were created from Earth's soil, most angels were happy and in awe of Kyrie's power. Others responded in secret with confusion and fear that they wouldn't be loved by Kyrie once more humans were created. These angels would join forces with Lucifer to form a [[Lucifer's Rebellion|rebellion]] against their creator in order to be the only creations remaining in His focus. Beeleth was not heavily involved in pre-war plans, and actually didn't anticipate the rebellion to become a full-on war at all. However, there was some tension between he and Galatea because of their differing opinions over the creation of humans and the future of the divine; he believed they were at risk of losing Kyrie's care, but she believed that they would all be loved equally in the end. Despite this, she promised to not let anyone dangerous find out about the rebellion's plans. ==== Death of Galatea ==== agagag === Fall from Heaven === sgsgs === fafafa === epic == Personality == stuff is here == Abilities == # '''Speaking Cacophonic and other languages:''' Since he is a fallen angel, he naturally speaks Cacophonic, which is the language of demons. As well as that, he is able to understand all other mortal languages and respond in them even if he doesn't recognize he is speaking in it. As for reading, it depends on the language. # '''Communicating to cats:''' Since he is a cat demon, he can understand and communicate with them. He and Sytri understand each other more than they are aware, which makes it hard for them to hide things. #* Some of his senses are also heightened. He can see better in the dark, smell more things, hear better, and sense things. However, he has a slightly worse sense of taste than normal demons. # Reshaping energy: wip i dont feel like writing rn # '''Retracting/moving horns, ears, wings, and tail:''' He is capable of retracting and changing the placement of some of his limbs, but rarely does it because he thinks it's silly and generally useless. This is connected to his shapeshifting ability in that if he doesn't pay enough attention, he will return to normal or regain some of his regular physical traits. # '''Psychokinesis on mortals and normal objects:''' If they are within his range, he can physically influence the things and people around him as long as they are mortals or objects without any special qualities that would prevent him from doing so. # '''Shapeshifting:''' Beeleth is able to switch between his normal form, a human form, and a cat form as he pleases. However, he does not like being belittled by others, so he often remains in his regular form. #* As a human, he goes by the name _. #* As a cat, he goes by the name _. # '''Entering blind rage:''' If he sees, experiences, or vividly remembers violence, he will enter a period of blind and violent rage that brings him physical pain and increases his physical and demonic strength exponentially. He will change out of any non-demonic form that he is currently in whenever he enters his rage state. #* In order to exit his rage state, he must calm down and/or run out of energy. It takes him a much longer time than his regular state to run out of energy completely, so depending on the situation, it might be easier to calm him down. However, it may be hard to calm him down during his rage state. # '''Altering personal bonds:''' He can change the way people feel about each other, which includes friendship, love, and many other types of feelings. He cannot use these powers on himself, deities, or other demons of rank. He is capable of combining this power with his energy-reshaping ability, which allows him to use energy projectiles as vessels for his bonding ability; this also works on regular weapons and projectiles. == Relationships == === Satan === Although they were once close, they have become more distant partially due to the rebellion's failure as well as Satan's physical condition following the fall from Heaven. === Kyrie === Beeleth views Kyrie as cruel. === Amdusias === Beeleth has become annoyed at Amdusias because of his current behavior and intentionally annoying nature. === Sytri === Beeleth cares for Sytri in an almost fatherly way, but is afraid to admit it because he worries that he will hurt the ones he loves. === Galatea === He feels immense guilt over the death of Galatea because he never thought that they would one day be apart, especially at his own hand. He still has periods of obsessive remorse related to the incident, and will lock himself away during them due to the intense feelings of violence and pain he gets during them. == Gallery == <gallery> File:Beelref.png|2021 reference sheet File:Beeleth.png|Full-body transparent image from 2021 reference sheet File:Beelcool.png|In combat using his energy reshaping ability </gallery> == Trivia == * Beeleth was originally made as BEELETH's booksona sometime before 2018 and was heavily inspired by Beleth from Floraverse, but was changed over time to be more personal and distinct. ** He is named Beeleth rather than Beleth solely because of Bee Movie jokes. * Cuperosa was designed to have his wings resemble broken hearts, and Beeleth's horns are meant to resemble a heart if his left horn is not broken. * His 2021 incarnation is based on his 2020 incarnation. ** That incarnation was based on the secondary form of his 2018-2019 incarnation. * He does not have a canon gender, but has canon pronouns. == Related Pages == * [[King]], his alternate incarnation in Art Portfolio Art Academy [[Category:Pride of the Peacock Angel]] [[Category:Characters]] [[Category:LGBT+ Characters]] [[Category:Neurodivergent Characters]] [[Category:Fallen Angels]] [[Category:Abstract Demons]] [[Category:Iconic Characters]] [[Category:Shapeshifters]] 57c5fe738d44c42382bde0bbc51b1feb86ceecb4 BEELETH 0 149 298 2022-07-09T00:07:59Z beeleth>Beeleth 0 wikitext text/x-wiki {{RealPerson}}{{General Character|caption1=Photo taken in 2021|birth=June 23|affiliation=|voice_claim=[https://www.youtube.com/watch?v=lpRbjrBKvME BEELETH]|nickname(s)=Beel<br> Euclid|gender=Epicene<br> * they/them * he/him * that one/that one's * no pronouns|title1=BEELETH|title=|species=Human (Filipino-American)|residence=United States|universe=Real World|image1=[[File:RealBEELETH.jpg|alt=Photograph of BEELETH]]|orientation=Unspecified|real_name=Ultimate Awesome Epic Guy 3: Deluxe Edition|relationships=* [https://coolpeoplw.fandom.com/wiki/Cam Cam] (partner) * [https://coolpeoplw.fandom.com/wiki/Rick Rick] (best friend) * [https://coolpeoplw.fandom.com/wiki/Chee Chee] (best friend) * [https://coolpeoplw.fandom.com/wiki/Izzy Izzy] (best friend)}} ''Not to be confused with [[King Beeleth]] from [[Pride of the Peacock Angel]].'' BEELETH is the real-world creator of the character universe detailed in this Wiki as well as the [[BEELETH Wiki]] itself. They are the main editor, but they're fine with others helping too. They have represented themselves (or at least certain aspects of themselves) through their work as various characters, including but not limited to [[Moss]] and [[King Beeleth]]. Almost all of their other characters also reflect something about them, their personality, their thoughts, and their experiences. == Inspiration == When creating new content, BEELETH takes inspiration from a variety of things, which includes childhood games, shows, and events. They may also take inspiration from current interests as well. Some of the inspirations that are most noticeable are Pokémon, Sonic the Hedgehog, and Klonoa. There are many other clear influences visible in different characters and their universes, but not frequent enough to be listed here. == Links == These pages are able to be used to find more first-hand information about BEELETH as well as their characters. * [https://beeleth.carrd.co/ Carrd] *[https://discord.gg/r9ZwNhV4rx Discord] * [https://www.roblox.com/users/30627566/profile Roblox] * [https://toyhou.se/BEELETH Toyhouse] * [https://twitter.com/itsbeeleth Twitter] [[Category:Real]] 9fd9a5393948fa30b90d91f6b839fd90216c8e78 Module:Message box/configuration 828 176 345 2022-07-11T18:19:26Z beeleth>Izno 0 add templatestyles, remove a variable or two as a result Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', substCheck = true, classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', templateCategoryRequireName = true, templateErrorCategory = 'Article message templates with missing parameters', templateErrorParamsToCheck = {'issue', 'fix', 'subst'}, removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>', templatestyles = 'Module:Message box/ambox.css' }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true, templatestyles = 'Module:Message box/cmbox.css' }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false, templatestyles = 'Module:Message box/fmbox.css' }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox license.png' -- @todo We need an SVG version of this }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg' }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes', templatestyles = 'Module:Message box/imbox.css' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true, templatestyles = 'Module:Message box/ombox.css' }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, templateCategory = 'Talk message boxes', templatestyles = 'Module:Message box/tmbox.css' } } b6f0151037e6867b577c8cca32ff297e48697a10 Module:Message box/ombox.css 828 232 463 2022-07-11T18:40:17Z beeleth>Izno 0 and move mbox-small to 720px here as well text text/plain /* {{pp|small=y}} */ .ombox { margin: 4px 0; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } /* For the "small=yes" option. */ .ombox.mbox-small { font-size: 88%; line-height: 1.25em; } .ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .ombox-delete { border: 2px solid #b32424; /* Red */ } .ombox-content { border: 1px solid #f28500; /* Orange */ } .ombox-style { border: 1px solid #fc3; /* Yellow */ } .ombox-move { border: 1px solid #9932cc; /* Purple */ } .ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } .ombox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.9em; width: 100%; } .ombox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.9em; text-align: center; } .ombox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.9em 2px 0; text-align: center; } /* An empty narrow cell */ .ombox .mbox-empty-cell { border: none; padding: 0; width: 1px; } .ombox .mbox-invalid-type { text-align: center; } @media (min-width: 720px) { .ombox { margin: 4px 10%; } .ombox.mbox-small { /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; width: 238px; } } 8fe3df4bb607e699eab2dbd23bd4a1a446391002 Template:Para 10 211 419 2022-07-22T08:06:17Z beeleth>TheDJ 0 breakup super long words, so we do not overflow the viewport. wikitext text/x-wiki <code class="tpl-para" style="word-break:break-word;{{SAFESUBST:<noinclude />#if:{{{plain|}}}|border: none; background-color: inherit;}} {{SAFESUBST:<noinclude />#if:{{{plain|}}}{{{mxt|}}}{{{green|}}}{{{!mxt|}}}{{{red|}}}|color: {{SAFESUBST:<noinclude />#if:{{{mxt|}}}{{{green|}}}|#006400|{{SAFESUBST:<noinclude />#if:{{{!mxt|}}}{{{red|}}}|#8B0000|inherit}}}};}} {{SAFESUBST:<noinclude />#if:{{{style|}}}|{{{style}}}}}">&#124;{{SAFESUBST:<noinclude />#if:{{{1|}}}|{{{1}}}&#61;}}{{{2|}}}</code><noinclude> {{Documentation}} <!--Categories and interwikis go near the bottom of the /doc subpage.--> </noinclude> 06006deea2ed5d552aab61b4332321ab749ae7e8 Template:High-use 10 219 437 2022-08-23T22:14:22Z beeleth>GKFX 0 Remove all-pages parameter - no longer used. wikitext text/x-wiki {{#invoke:High-use|main|1={{{1|}}}|2={{{2|}}}|info={{{info|}}}|demo={{{demo|}}}|form={{{form|}}}|expiry={{{expiry|}}}|system={{{system|}}}}}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage; interwiki links go to Wikidata, thank you! --> </noinclude> a3322d1bd47ac03df14fa2090855cff4fede9bc7 Module:Hatnote 828 70 389 138 2022-09-05T18:18:32Z beeleth>Nihiltres 0 Reordered helper functions (first by export status, then alphabetically) and migrated p.quote upstream from [[Module:Redirect hatnote]] (includes contributions by Tamzin and Nihiltres) Scribunto text/plain -------------------------------------------------------------------------------- -- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the {{hatnote}} and {{format link}} meta-templates and includes -- -- helper functions for other Lua hatnote modules. -- -------------------------------------------------------------------------------- local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg local mArguments -- lazily initialise [[Module:Arguments]] local yesno -- lazily initialise [[Module:Yesno]] local formatLink -- lazily initialise [[Module:Format link]] ._formatLink local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end function p.defaultClasses(inline) -- Provides the default hatnote classes as a space-separated string; useful -- for hatnote-manipulation modules like [[Module:Hatnote group]]. return (inline == 1 and 'hatnote-inline' or 'hatnote') .. ' ' .. 'navigation-not-searchable' end function p.disambiguate(page, disambiguator) -- Formats a page title with a disambiguation parenthetical, -- i.e. "Example" → "Example (disambiguation)". checkType('disambiguate', 1, page, 'string') checkType('disambiguate', 2, disambiguator, 'string', true) disambiguator = disambiguator or 'disambiguation' return mw.ustring.format('%s (%s)', page, disambiguator) end function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to false. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end function p.makeWikitextError(msg, helpLink, addTrackingCategory, title) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- [[Module:Yesno]], and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') title = title or mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' ([[' .. helpLink .. '|help]])' else helpText = '' end -- Make the category text. local category if not title.isTalkPage -- Don't categorise talk pages and title.namespace ~= 2 -- Don't categorise userspace and yesno(addTrackingCategory) ~= false -- Allow opting out then category = 'Hatnote templates with errors' category = mw.ustring.format( '[[%s:%s]]', mw.site.namespaces[14].name, category ) else category = '' end return mw.ustring.format( '<strong class="error">Error: %s%s.</strong>%s', msg, helpText, category ) end local curNs = mw.title.getCurrentTitle().namespace p.missingTargetCat = --Default missing target category, exported for use in related modules ((curNs == 0) or (curNs == 14)) and 'Articles with hatnote templates targeting a nonexistent page' or nil function p.quote(title) --Wraps titles in quotation marks. If the title starts/ends with a quotation --mark, kerns that side as with {{-'}} local quotationMarks = { ["'"]=true, ['"']=true, ['“']=true, ["‘"]=true, ['”']=true, ["’"]=true } local quoteLeft, quoteRight = -- Test if start/end are quotation marks quotationMarks[string.sub(title, 1, 1)], quotationMarks[string.sub(title, -1, -1)] if quoteLeft or quoteRight then title = mw.html.create("span"):wikitext(title) end if quoteLeft then title:css("padding-left", "0.15em") end if quoteRight then title:css("padding-right", "0.15em") end return '"' .. tostring(title) .. '"' end -------------------------------------------------------------------------------- -- Hatnote -- -- Produces standard hatnote text. Implements the {{hatnote}} template. -------------------------------------------------------------------------------- function p.hatnote(frame) local args = getArgs(frame) local s = args[1] if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end return p._hatnote(s, { extraclasses = args.extraclasses, selfref = args.selfref }) end function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) options = options or {} local inline = options.inline local hatnote = mw.html.create(inline == 1 and 'span' or 'div') local extraclasses if type(options.extraclasses) == 'string' then extraclasses = options.extraclasses end hatnote :attr('role', 'note') :addClass(p.defaultClasses(inline)) :addClass(extraclasses) :addClass(options.selfref and 'selfref' or nil) :wikitext(s) return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Module:Hatnote/styles.css' } } .. tostring(hatnote) end return p 3ae1ed7094c5005ca0896395ec9a587287a0bef1 Template:Parameter names example 10 227 453 2022-09-15T17:36:18Z beeleth>Aidan9382 0 Hatnote should ideally be moved into documentation as to allow users to edit it regardless of the protection on the main template wikitext text/x-wiki <includeonly>{{#invoke:Parameter names example|main}}</includeonly><noinclude> {{Documentation}} </noinclude> de1e29d6ebc113e9d1649ea6a976625885db8a2f Module:Documentation 828 212 423 2022-09-29T01:57:36Z beeleth>Andrybak 0 update code comment according to [[Special:Diff/989669779]] Scribunto text/plain -- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purposes. ---------------------------------------------------------------------------- local function message(cfgKey, valArray, expectType) --[[ -- Gets a message from the cfg table and formats it if appropriate. -- The function raises an error if the value from the cfg table is not -- of the type expectType. The default type for expectType is 'string'. -- If the table valArray is present, strings such as $1, $2 etc. in the -- message are substituted with values from the table keys [1], [2] etc. -- For example, if the message "foo-message" had the value 'Foo $2 bar $1.', -- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz." --]] local msg = cfg[cfgKey] expectType = expectType or 'string' if type(msg) ~= expectType then error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) end if not valArray then return msg end local function getMessageVal(match) match = tonumber(match) return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4) end return ugsub(msg, '$([1-9][0-9]*)', getMessageVal) end p.message = message local function makeWikilink(page, display) if display then return mw.ustring.format('[[%s|%s]]', page, display) else return mw.ustring.format('[[%s]]', page) end end p.makeWikilink = makeWikilink local function makeCategoryLink(cat, sort) local catns = mw.site.namespaces[14].name return makeWikilink(catns .. ':' .. cat, sort) end p.makeCategoryLink = makeCategoryLink local function makeUrlLink(url, display) return mw.ustring.format('[%s %s]', url, display) end p.makeUrlLink = makeUrlLink local function makeToolbar(...) local ret = {} local lim = select('#', ...) if lim < 1 then return nil end for i = 1, lim do ret[#ret + 1] = select(i, ...) end -- 'documentation-toolbar' return '<span class="' .. message('toolbar-class') .. '">(' .. table.concat(ret, ' &#124; ') .. ')</span>' end p.makeToolbar = makeToolbar ---------------------------------------------------------------------------- -- Argument processing ---------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local args = getArgs(frame, { valueFunc = function (key, value) if type(value) == 'string' then value = value:match('^%s*(.-)%s*$') -- Remove whitespace. if key == 'heading' or value ~= '' then return value else return nil end else return value end end }) return p[funcName](args) end end ---------------------------------------------------------------------------- -- Entry points ---------------------------------------------------------------------------- function p.nonexistent(frame) if mw.title.getCurrentTitle().subpageText == 'testcases' then return frame:expandTemplate{title = 'module test cases notice'} else return p.main(frame) end end p.main = makeInvokeFunc('_main') function p._main(args) --[[ -- This function defines logic flow for the module. -- @args - table of arguments passed by the user --]] local env = p.getEnvironment(args) local root = mw.html.create() root :wikitext(p._getModuleWikitext(args, env)) :wikitext(p.protectionTemplate(env)) :wikitext(p.sandboxNotice(args, env)) :tag('div') -- 'documentation-container' :addClass(message('container')) :attr('role', 'complementary') :attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil) :attr('aria-label', args.heading == '' and 'Documentation' or nil) :newline() :tag('div') -- 'documentation' :addClass(message('main-div-classes')) :newline() :wikitext(p._startBox(args, env)) :wikitext(p._content(args, env)) :tag('div') -- 'documentation-clear' :addClass(message('clear')) :done() :newline() :done() :wikitext(p._endBox(args, env)) :done() :wikitext(p.addTrackingCategories(env)) -- 'Module:Documentation/styles.css' return mw.getCurrentFrame():extensionTag ( 'templatestyles', '', {src=cfg['templatestyles'] }) .. tostring(root) end ---------------------------------------------------------------------------- -- Environment settings ---------------------------------------------------------------------------- function p.getEnvironment(args) --[[ -- Returns a table with information about the environment, including title -- objects and other namespace- or path-related data. -- @args - table of arguments passed by the user -- -- Title objects include: -- env.title - the page we are making documentation for (usually the current title) -- env.templateTitle - the template (or module, file, etc.) -- env.docTitle - the /doc subpage. -- env.sandboxTitle - the /sandbox subpage. -- env.testcasesTitle - the /testcases subpage. -- -- Data includes: -- env.protectionLevels - the protection levels table of the title object. -- env.subjectSpace - the number of the title's subject namespace. -- env.docSpace - the number of the namespace the title puts its documentation in. -- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace. -- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template. -- -- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value -- returned will be nil. --]] local env, envFuncs = {}, {} -- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value -- returned by that function is memoized in the env table so that we don't call any of the functions -- more than once. (Nils won't be memoized.) setmetatable(env, { __index = function (t, key) local envFunc = envFuncs[key] if envFunc then local success, val = pcall(envFunc) if success then env[key] = val -- Memoise the value. return val end end return nil end }) function envFuncs.title() -- The title object for the current page, or a test page passed with args.page. local title local titleArg = args.page if titleArg then title = mw.title.new(titleArg) else title = mw.title.getCurrentTitle() end return title end function envFuncs.templateTitle() --[[ -- The template (or module, etc.) title object. -- Messages: -- 'sandbox-subpage' --> 'sandbox' -- 'testcases-subpage' --> 'testcases' --]] local subjectSpace = env.subjectSpace local title = env.title local subpage = title.subpageText if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then return mw.title.makeTitle(subjectSpace, title.baseText) else return mw.title.makeTitle(subjectSpace, title.text) end end function envFuncs.docTitle() --[[ -- Title object of the /doc subpage. -- Messages: -- 'doc-subpage' --> 'doc' --]] local title = env.title local docname = args[1] -- User-specified doc page. local docpage if docname then docpage = docname else docpage = env.docpageBase .. '/' .. message('doc-subpage') end return mw.title.new(docpage) end function envFuncs.sandboxTitle() --[[ -- Title object for the /sandbox subpage. -- Messages: -- 'sandbox-subpage' --> 'sandbox' --]] return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage')) end function envFuncs.testcasesTitle() --[[ -- Title object for the /testcases subpage. -- Messages: -- 'testcases-subpage' --> 'testcases' --]] return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage')) end function envFuncs.protectionLevels() -- The protection levels table of the title object. return env.title.protectionLevels end function envFuncs.subjectSpace() -- The subject namespace number. return mw.site.namespaces[env.title.namespace].subject.id end function envFuncs.docSpace() -- The documentation namespace number. For most namespaces this is the -- same as the subject namespace. However, pages in the Article, File, -- MediaWiki or Category namespaces must have their /doc, /sandbox and -- /testcases pages in talk space. local subjectSpace = env.subjectSpace if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then return subjectSpace + 1 else return subjectSpace end end function envFuncs.docpageBase() -- The base page of the /doc, /sandbox, and /testcases subpages. -- For some namespaces this is the talk page, rather than the template page. local templateTitle = env.templateTitle local docSpace = env.docSpace local docSpaceText = mw.site.namespaces[docSpace].name -- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon. return docSpaceText .. ':' .. templateTitle.text end function envFuncs.compareUrl() -- Diff link between the sandbox and the main template using [[Special:ComparePages]]. local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle if templateTitle.exists and sandboxTitle.exists then local compareUrl = mw.uri.fullUrl( 'Special:ComparePages', { page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} ) return tostring(compareUrl) else return nil end end return env end ---------------------------------------------------------------------------- -- Auxiliary templates ---------------------------------------------------------------------------- p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext') function p._getModuleWikitext(args, env) local currentTitle = mw.title.getCurrentTitle() if currentTitle.contentModel ~= 'Scribunto' then return end pcall(require, currentTitle.prefixedText) -- if it fails, we don't care local moduleWikitext = package.loaded["Module:Module wikitext"] if moduleWikitext then return moduleWikitext.main() end end function p.sandboxNotice(args, env) --[=[ -- Generates a sandbox notice for display above sandbox pages. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-notice-image' --> '[[File:Sandbox.svg|50px|alt=|link=]]' -- 'sandbox-notice-blurb' --> 'This is the $1 for $2.' -- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).' -- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page' -- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page' -- 'sandbox-notice-pagetype-other' --> 'sandbox page' -- 'sandbox-notice-compare-link-display' --> 'diff' -- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.' -- 'sandbox-notice-testcases-link-display' --> 'test cases' -- 'sandbox-category' --> 'Template sandboxes' --]=] local title = env.title local sandboxTitle = env.sandboxTitle local templateTitle = env.templateTitle local subjectSpace = env.subjectSpace if not (subjectSpace and title and sandboxTitle and templateTitle and mw.title.equals(title, sandboxTitle)) then return nil end -- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text". local omargs = {} omargs.image = message('sandbox-notice-image') -- Get the text. We start with the opening blurb, which is something like -- "This is the template sandbox for [[Template:Foo]] (diff)." local text = '' local pagetype if subjectSpace == 10 then pagetype = message('sandbox-notice-pagetype-template') elseif subjectSpace == 828 then pagetype = message('sandbox-notice-pagetype-module') else pagetype = message('sandbox-notice-pagetype-other') end local templateLink = makeWikilink(templateTitle.prefixedText) local compareUrl = env.compareUrl if compareUrl then local compareDisplay = message('sandbox-notice-compare-link-display') local compareLink = makeUrlLink(compareUrl, compareDisplay) text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink}) else text = text .. message('sandbox-notice-blurb', {pagetype, templateLink}) end -- Get the test cases page blurb if the page exists. This is something like -- "See also the companion subpage for [[Template:Foo/testcases|test cases]]." local testcasesTitle = env.testcasesTitle if testcasesTitle and testcasesTitle.exists then if testcasesTitle.contentModel == "Scribunto" then local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink}) else local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink}) end end -- Add the sandbox to the sandbox category. omargs.text = text .. makeCategoryLink(message('sandbox-category')) -- 'documentation-clear' return '<div class="' .. message('clear') .. '"></div>' .. require('Module:Message box').main('ombox', omargs) end function p.protectionTemplate(env) -- Generates the padlock icon in the top right. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'protection-template' --> 'pp-template' -- 'protection-template-args' --> {docusage = 'yes'} local protectionLevels = env.protectionLevels if not protectionLevels then return nil end local editProt = protectionLevels.edit and protectionLevels.edit[1] local moveProt = protectionLevels.move and protectionLevels.move[1] if editProt then -- The page is edit-protected. return require('Module:Protection banner')._main{ message('protection-reason-edit'), small = true } elseif moveProt and moveProt ~= 'autoconfirmed' then -- The page is move-protected but not edit-protected. Exclude move -- protection with the level "autoconfirmed", as this is equivalent to -- no move protection at all. return require('Module:Protection banner')._main{ action = 'move', small = true } else return nil end end ---------------------------------------------------------------------------- -- Start box ---------------------------------------------------------------------------- p.startBox = makeInvokeFunc('_startBox') function p._startBox(args, env) --[[ -- This function generates the start box. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make -- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox -- which generate the box HTML. --]] env = env or p.getEnvironment(args) local links local content = args.content if not content or args[1] then -- No need to include the links if the documentation is on the template page itself. local linksData = p.makeStartBoxLinksData(args, env) if linksData then links = p.renderStartBoxLinks(linksData) end end -- Generate the start box html. local data = p.makeStartBoxData(args, env, links) if data then return p.renderStartBox(data) else -- User specified no heading. return nil end end function p.makeStartBoxLinksData(args, env) --[[ -- Does initial processing of data to make the [view] [edit] [history] [purge] links. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'view-link-display' --> 'view' -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'purge-link-display' --> 'purge' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'docpage-preload' --> 'Template:Documentation/preload' -- 'create-link-display' --> 'create' --]] local subjectSpace = env.subjectSpace local title = env.title local docTitle = env.docTitle if not title or not docTitle then return nil end if docTitle.isRedirect then docTitle = docTitle.redirectTarget end local data = {} data.title = title data.docTitle = docTitle -- View, display, edit, and purge links if /doc exists. data.viewLinkDisplay = message('view-link-display') data.editLinkDisplay = message('edit-link-display') data.historyLinkDisplay = message('history-link-display') data.purgeLinkDisplay = message('purge-link-display') -- Create link if /doc doesn't exist. local preload = args.preload if not preload then if subjectSpace == 828 then -- Module namespace preload = message('module-preload') else preload = message('docpage-preload') end end data.preload = preload data.createLinkDisplay = message('create-link-display') return data end function p.renderStartBoxLinks(data) --[[ -- Generates the [view][edit][history][purge] or [create][purge] links from the data table. -- @data - a table of data generated by p.makeStartBoxLinksData --]] local function escapeBrackets(s) -- Escapes square brackets with HTML entities. s = s:gsub('%[', '&#91;') -- Replace square brackets with HTML entities. s = s:gsub('%]', '&#93;') return s end local ret local docTitle = data.docTitle local title = data.title local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay) if docTitle.exists then local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay) local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay) local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay) ret = '[%s] [%s] [%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink) else local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay) ret = '[%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, createLink, purgeLink) end return ret end function p.makeStartBoxData(args, env, links) --[=[ -- Does initial processing of data to pass to the start-box render function, p.renderStartBox. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error. -- -- Messages: -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- 'template-namespace-heading' --> 'Template documentation' -- 'module-namespace-heading' --> 'Module documentation' -- 'file-namespace-heading' --> 'Summary' -- 'other-namespaces-heading' --> 'Documentation' -- 'testcases-create-link-display' --> 'create' --]=] local subjectSpace = env.subjectSpace if not subjectSpace then -- Default to an "other namespaces" namespace, so that we get at least some output -- if an error occurs. subjectSpace = 2 end local data = {} -- Heading local heading = args.heading -- Blank values are not removed. if heading == '' then -- Don't display the start box if the heading arg is defined but blank. return nil end if heading then data.heading = heading elseif subjectSpace == 10 then -- Template namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading') elseif subjectSpace == 828 then -- Module namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading') elseif subjectSpace == 6 then -- File namespace data.heading = message('file-namespace-heading') else data.heading = message('other-namespaces-heading') end -- Heading CSS local headingStyle = args['heading-style'] if headingStyle then data.headingStyleText = headingStyle else -- 'documentation-heading' data.headingClass = message('main-div-heading-class') end -- Data for the [view][edit][history][purge] or [create] links. if links then -- 'mw-editsection-like plainlinks' data.linksClass = message('start-box-link-classes') data.links = links end return data end function p.renderStartBox(data) -- Renders the start box html. -- @data - a table of data generated by p.makeStartBoxData. local sbox = mw.html.create('div') sbox -- 'documentation-startbox' :addClass(message('start-box-class')) :newline() :tag('span') :addClass(data.headingClass) :attr('id', 'documentation-heading') :cssText(data.headingStyleText) :wikitext(data.heading) local links = data.links if links then sbox:tag('span') :addClass(data.linksClass) :attr('id', data.linksId) :wikitext(links) end return tostring(sbox) end ---------------------------------------------------------------------------- -- Documentation content ---------------------------------------------------------------------------- p.content = makeInvokeFunc('_content') function p._content(args, env) -- Displays the documentation contents -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment env = env or p.getEnvironment(args) local docTitle = env.docTitle local content = args.content if not content and docTitle and docTitle.exists then content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText} end -- The line breaks below are necessary so that "=== Headings ===" at the start and end -- of docs are interpreted correctly. return '\n' .. (content or '') .. '\n' end p.contentTitle = makeInvokeFunc('_contentTitle') function p._contentTitle(args, env) env = env or p.getEnvironment(args) local docTitle = env.docTitle if not args.content and docTitle and docTitle.exists then return docTitle.prefixedText else return '' end end ---------------------------------------------------------------------------- -- End box ---------------------------------------------------------------------------- p.endBox = makeInvokeFunc('_endBox') function p._endBox(args, env) --[=[ -- This function generates the end box (also known as the link box). -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- --]=] -- Get environment data. env = env or p.getEnvironment(args) local subjectSpace = env.subjectSpace local docTitle = env.docTitle if not subjectSpace or not docTitle then return nil end -- Check whether we should output the end box at all. Add the end -- box by default if the documentation exists or if we are in the -- user, module or template namespaces. local linkBox = args['link box'] if linkBox == 'off' or not ( docTitle.exists or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 ) then return nil end -- Assemble the link box. local text = '' if linkBox then text = text .. linkBox else text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]." if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then -- We are in the user, template or module namespaces. -- Add sandbox and testcases links. -- "Editors can experiment in this template's sandbox and testcases pages." text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />' if not args.content and not args[1] then -- "Please add categories to the /doc subpage." -- Don't show this message with inline docs or with an explicitly specified doc page, -- as then it is unclear where to add the categories. text = text .. (p.makeCategoriesBlurb(args, env) or '') end text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template" end end local box = mw.html.create('div') -- 'documentation-metadata' box:attr('role', 'note') :addClass(message('end-box-class')) -- 'plainlinks' :addClass(message('end-box-plainlinks')) :wikitext(text) :done() return '\n' .. tostring(box) end function p.makeDocPageBlurb(args, env) --[=[ -- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)". -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'transcluded-from-blurb' --> -- 'The above [[Wikipedia:Template documentation|documentation]] -- is [[Help:Transclusion|transcluded]] from $1.' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'create-link-display' --> 'create' -- 'create-module-doc-blurb' --> -- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' --]=] local docTitle = env.docTitle if not docTitle then return nil end local ret if docTitle.exists then -- /doc exists; link to it. local docLink = makeWikilink(docTitle.prefixedText) local editUrl = docTitle:fullUrl{action = 'edit'} local editDisplay = message('edit-link-display') local editLink = makeUrlLink(editUrl, editDisplay) local historyUrl = docTitle:fullUrl{action = 'history'} local historyDisplay = message('history-link-display') local historyLink = makeUrlLink(historyUrl, historyDisplay) ret = message('transcluded-from-blurb', {docLink}) .. ' ' .. makeToolbar(editLink, historyLink) .. '<br />' elseif env.subjectSpace == 828 then -- /doc does not exist; ask to create it. local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')} local createDisplay = message('create-link-display') local createLink = makeUrlLink(createUrl, createDisplay) ret = message('create-module-doc-blurb', {createLink}) .. '<br />' end return ret end function p.makeExperimentBlurb(args, env) --[[ -- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-link-display' --> 'sandbox' -- 'sandbox-edit-link-display' --> 'edit' -- 'compare-link-display' --> 'diff' -- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'sandbox-create-link-display' --> 'create' -- 'mirror-edit-summary' --> 'Create sandbox version of $1' -- 'mirror-link-display' --> 'mirror' -- 'mirror-link-preload' --> 'Template:Documentation/mirror' -- 'sandbox-link-display' --> 'sandbox' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display'--> 'edit' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'testcases-create-link-display' --> 'create' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display' --> 'edit' -- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases' -- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases' -- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.' -- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle local testcasesTitle = env.testcasesTitle local templatePage = templateTitle.prefixedText if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then return nil end -- Make links. local sandboxLinks, testcasesLinks if sandboxTitle.exists then local sandboxPage = sandboxTitle.prefixedText local sandboxDisplay = message('sandbox-link-display') local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay) local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'} local sandboxEditDisplay = message('sandbox-edit-link-display') local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay) local compareUrl = env.compareUrl local compareLink if compareUrl then local compareDisplay = message('compare-link-display') compareLink = makeUrlLink(compareUrl, compareDisplay) end sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink) else local sandboxPreload if subjectSpace == 828 then sandboxPreload = message('module-sandbox-preload') else sandboxPreload = message('template-sandbox-preload') end local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload} local sandboxCreateDisplay = message('sandbox-create-link-display') local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)}) local mirrorPreload = message('mirror-link-preload') local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} if subjectSpace == 828 then mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary} end local mirrorDisplay = message('mirror-link-display') local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) end if testcasesTitle.exists then local testcasesPage = testcasesTitle.prefixedText local testcasesDisplay = message('testcases-link-display') local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay) local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'} local testcasesEditDisplay = message('testcases-edit-link-display') local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) -- for Modules, add testcases run link if exists if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then local testcasesRunLinkDisplay = message('testcases-run-link-display') local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink) else testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) end else local testcasesPreload if subjectSpace == 828 then testcasesPreload = message('module-testcases-preload') else testcasesPreload = message('template-testcases-preload') end local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload} local testcasesCreateDisplay = message('testcases-create-link-display') local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink) end local messageName if subjectSpace == 828 then messageName = 'experiment-blurb-module' else messageName = 'experiment-blurb-template' end return message(messageName, {sandboxLinks, testcasesLinks}) end function p.makeCategoriesBlurb(args, env) --[[ -- Generates the text "Please add categories to the /doc subpage." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'doc-link-display' --> '/doc' -- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.' --]] local docTitle = env.docTitle if not docTitle then return nil end local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display')) return message('add-categories-blurb', {docPathLink}) end function p.makeSubpagesBlurb(args, env) --[[ -- Generates the "Subpages of this template" link. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'template-pagetype' --> 'template' -- 'module-pagetype' --> 'module' -- 'default-pagetype' --> 'page' -- 'subpages-link-display' --> 'Subpages of this $1' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle if not subjectSpace or not templateTitle then return nil end local pagetype if subjectSpace == 10 then pagetype = message('template-pagetype') elseif subjectSpace == 828 then pagetype = message('module-pagetype') else pagetype = message('default-pagetype') end local subpagesLink = makeWikilink( 'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', message('subpages-link-display', {pagetype}) ) return message('subpages-blurb', {subpagesLink}) end ---------------------------------------------------------------------------- -- Tracking categories ---------------------------------------------------------------------------- function p.addTrackingCategories(env) --[[ -- Check if {{documentation}} is transcluded on a /doc or /testcases page. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'display-strange-usage-category' --> true -- 'doc-subpage' --> 'doc' -- 'testcases-subpage' --> 'testcases' -- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage' -- -- /testcases pages in the module namespace are not categorised, as they may have -- {{documentation}} transcluded automatically. --]] local title = env.title local subjectSpace = env.subjectSpace if not title or not subjectSpace then return nil end local subpage = title.subpageText local ret = '' if message('display-strange-usage-category', nil, 'boolean') and ( subpage == message('doc-subpage') or subjectSpace ~= 828 and subpage == message('testcases-subpage') ) then ret = ret .. makeCategoryLink(message('strange-usage-category')) end return ret end return p 2fd7faef98df56f55eede30c4ff07b2431823ee1 Module:Format link 828 196 387 2022-10-04T13:37:11Z beeleth>Pppery 0 Avoid Lua erroring when we run out of expensive parser function calls Scribunto text/plain -------------------------------------------------------------------------------- -- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the {{format link}} template. -------------------------------------------------------------------------------- local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg local mArguments -- lazily initialise [[Module:Arguments]] local mError -- lazily initialise [[Module:Error]] local yesno -- lazily initialise [[Module:Yesno]] local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end local function maybeItalicize(s, shouldItalicize) -- Italicize s if s is a string and the shouldItalicize parameter is true. if s and shouldItalicize then return '<i>' .. s .. '</i>' else return s end end local function parseLink(link) -- Parse a link and return a table with the link's components. -- These components are: -- - link: the link, stripped of any initial colon (always present) -- - page: the page name (always present) -- - section: the page name (may be nil) -- - display: the display text, if manually entered after a pipe (may be nil) link = removeInitialColon(link) -- Find whether a faux display value has been added with the {{!}} magic -- word. local prePipe, display = link:match('^(.-)|(.*)$') link = prePipe or link -- Find the page, if it exists. -- For links like [[#Bar]], the page will be nil. local preHash, postHash = link:match('^(.-)#(.*)$') local page if not preHash then -- We have a link like [[Foo]]. page = link elseif preHash ~= '' then -- We have a link like [[Foo#Bar]]. page = preHash end -- Find the section, if it exists. local section if postHash and postHash ~= '' then section = postHash end return { link = link, page = page, section = section, display = display, } end local function formatDisplay(parsed, options) -- Formats a display string based on a parsed link table (matching the -- output of parseLink) and an options table (matching the input options for -- _formatLink). local page = maybeItalicize(parsed.page, options.italicizePage) local section = maybeItalicize(parsed.section, options.italicizeSection) if (not section) then return page elseif (not page) then return mw.ustring.format('§&nbsp;%s', section) else return mw.ustring.format('%s §&nbsp;%s', page, section) end end local function missingArgError(target) mError = require('Module:Error') return mError.error{message = 'Error: no link or target specified! ([[' .. target .. '#Errors|help]])' } end -------------------------------------------------------------------------------- -- Main functions -------------------------------------------------------------------------------- function p.formatLink(frame) -- The formatLink export function, for use in templates. yesno = require('Module:Yesno') local args = getArgs(frame) local link = args[1] or args.link local target = args[3] or args.target if not (link or target) then return missingArgError('Template:Format link') end return p._formatLink{ link = link, display = args[2] or args.display, target = target, italicizePage = yesno(args.italicizepage), italicizeSection = yesno(args.italicizesection), categorizeMissing = args.categorizemissing } end function p._formatLink(options) -- The formatLink export function, for use in modules. checkType('_formatLink', 1, options, 'table') local function check(key, expectedType) --for brevity checkTypeForNamedArg( '_formatLink', key, options[key], expectedType or 'string', true ) end check('link') check('display') check('target') check('italicizePage', 'boolean') check('italicizeSection', 'boolean') check('categorizeMissing') -- Normalize link and target and check that at least one is present if options.link == '' then options.link = nil end if options.target == '' then options.target = nil end if not (options.link or options.target) then return missingArgError('Module:Format link') end local parsed = parseLink(options.link) local display = options.display or parsed.display local catMissing = options.categorizeMissing local category = '' -- Find the display text if not display then display = formatDisplay(parsed, options) end -- Handle the target option if present if options.target then local parsedTarget = parseLink(options.target) parsed.link = parsedTarget.link parsed.page = parsedTarget.page end -- Test if page exists if a diagnostic category is specified if catMissing and (mw.ustring.len(catMissing) > 0) then local title = nil if parsed.page then title = mw.title.new(parsed.page) end if title and (not title.isExternal) then local success, exists = pcall(function() return title.exists end) if success and not exists then category = mw.ustring.format('[[Category:%s]]', catMissing) end end end -- Format the result as a link if parsed.link == display then return mw.ustring.format('[[:%s]]%s', parsed.link, category) else return mw.ustring.format('[[:%s|%s]]%s', parsed.link, display, category) end end -------------------------------------------------------------------------------- -- Derived convenience functions -------------------------------------------------------------------------------- function p.formatPages(options, pages) -- Formats an array of pages using formatLink and the given options table, -- and returns it as an array. Nil values are not allowed. local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink{ link = page, categorizeMissing = options.categorizeMissing, italicizePage = options.italicizePage, italicizeSection = options.italicizeSection } end return ret end return p 1253bdd2683ee4badc33856bfd5499b09a7dca1f Module:Protection banner/config 828 203 403 2022-10-06T04:15:13Z beeleth>Paine Ellsworth 0 per edit request at [[Module talk:Protection banner#Tooltip/title does not match the actual protection level]] - fix appearance of protection level Scribunto text/plain -- This module provides configuration data for [[Module:Protection banner]]. return { -------------------------------------------------------------------------------- -- -- BANNER DATA -- -------------------------------------------------------------------------------- --[[ -- Banner data consists of six fields: -- * text - the main protection text that appears at the top of protection -- banners. -- * explanation - the text that appears below the main protection text, used -- to explain the details of the protection. -- * tooltip - the tooltip text you see when you move the mouse over a small -- padlock icon. -- * link - the page that the small padlock icon links to. -- * alt - the alt text for the small padlock icon. This is also used as tooltip -- text for the large protection banners. -- * image - the padlock image used in both protection banners and small padlock -- icons. -- -- The module checks in three separate tables to find a value for each field. -- First it checks the banners table, which has values specific to the reason -- for the page being protected. Then the module checks the defaultBanners -- table, which has values specific to each protection level. Finally, the -- module checks the masterBanner table, which holds data for protection -- templates to use if no data has been found in the previous two tables. -- -- The values in the banner data can take parameters. These are specified -- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name -- enclosed in curly braces). -- -- Available parameters: -- -- ${CURRENTVERSION} - a link to the page history or the move log, with the -- display message "current-version-edit-display" or -- "current-version-move-display". -- -- ${EDITREQUEST} - a link to create an edit request for the current page. -- -- ${EXPLANATIONBLURB} - an explanation blurb, e.g. "Please discuss any changes -- on the talk page; you may submit a request to ask an administrator to make -- an edit if it is minor or supported by consensus." -- -- ${IMAGELINK} - a link to set the image to, depending on the protection -- action and protection level. -- -- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry -- is set. E.g. "Editing of this page by new or unregistered users is currently -- disabled until dd Month YYYY." -- -- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation -- so that it can be used in run-on sentences. -- -- ${PAGETYPE} - the type of the page, e.g. "article" or "template". -- Defined in the cfg.pagetypes table. -- -- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g. -- "Editing of this page by new or unregistered users is currently disabled" -- -- ${PROTECTIONDATE} - the protection date, if it has been supplied to the -- template. -- -- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or -- "semi-protected". -- -- ${PROTECTIONLOG} - a link to the protection log or the pending changes log, -- depending on the protection action. -- -- ${TALKPAGE} - a link to the talk page. If a section is specified, links -- straight to that talk page section. -- -- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to -- create a blurb like "This template is semi-protected", or "This article is -- move-protected until DD Month YYYY". -- -- ${VANDAL} - links for the specified username (or the root page name) -- using Module:Vandal-m. -- -- Functions -- -- For advanced users, it is possible to use Lua functions instead of strings -- in the banner config tables. Using functions gives flexibility that is not -- possible just by using parameters. Functions take two arguments, the -- protection object and the template arguments, and they must output a string. -- -- For example: -- -- text = function (protectionObj, args) -- if protectionObj.level == 'autoconfirmed' then -- return 'foo' -- else -- return 'bar' -- end -- end -- -- Some protection object properties and methods that may be useful: -- protectionObj.action - the protection action -- protectionObj.level - the protection level -- protectionObj.reason - the protection reason -- protectionObj.expiry - the expiry. Nil if unset, the string "indef" if set -- to indefinite, and the protection time in unix time if temporary. -- protectionObj.protectionDate - the protection date in unix time, or nil if -- unspecified. -- protectionObj.bannerConfig - the banner config found by the module. Beware -- of editing the config field used by the function, as it could create an -- infinite loop. -- protectionObj:isProtected - returns a boolean showing whether the page is -- protected. -- protectionObj:isTemporary - returns a boolean showing whether the expiry is -- temporary. -- protectionObj:isIncorrect - returns a boolean showing whether the protection -- template is incorrect. --]] -- The master banner data, used if no values have been found in banners or -- defaultBanners. masterBanner = { text = '${INTROBLURB}', explanation = '${EXPLANATIONBLURB}', tooltip = '${TOOLTIPBLURB}', link = '${IMAGELINK}', alt = 'Page ${PROTECTIONLEVEL}' }, -- The default banner data. This holds banner data for different protection -- levels. -- *required* - this table needs edit, move, autoreview and upload subtables. defaultBanners = { edit = {}, move = {}, autoreview = { default = { alt = 'Page protected with pending changes', tooltip = 'All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users', image = 'Pending-protection-shackle.svg' } }, upload = {} }, -- The banner data. This holds banner data for different protection reasons. -- In fact, the reasons specified in this table control which reasons are -- valid inputs to the first positional parameter. -- -- There is also a non-standard "description" field that can be used for items -- in this table. This is a description of the protection reason for use in the -- module documentation. -- -- *required* - this table needs edit, move, autoreview and upload subtables. banners = { edit = { blp = { description = 'For pages protected to promote compliance with the' .. ' [[Wikipedia:Biographies of living persons' .. '|biographies of living persons]] policy', text = '${INTROFRAGMENT} to promote compliance with' .. ' [[Wikipedia:Biographies of living persons' .. "|Wikipedia's&nbsp;policy on&nbsp;the&nbsp;biographies" .. ' of&nbsp;living&nbsp;people]].', tooltip = '${TOOLTIPFRAGMENT} to promote compliance with the policy on' .. ' biographies of living persons', }, dmca = { description = 'For pages protected by the Wikimedia Foundation' .. ' due to [[Digital Millennium Copyright Act]] takedown requests', explanation = function (protectionObj, args) local ret = 'Pursuant to a rights owner notice under the Digital' .. ' Millennium Copyright Act (DMCA) regarding some content' .. ' in this article, the Wikimedia Foundation acted under' .. ' applicable law and took down and restricted the content' .. ' in question.' if args.notice then ret = ret .. ' A copy of the received notice can be found here: ' .. args.notice .. '.' end ret = ret .. ' For more information, including websites discussing' .. ' how to file a counter-notice, please see' .. " [[Wikipedia:Office actions]] and the article's ${TALKPAGE}." .. "'''Do not remove this template from the article until the" .. " restrictions are withdrawn'''." return ret end, image = 'Office-protection-shackle.svg', }, dispute = { description = 'For pages protected due to editing disputes', text = function (protectionObj, args) -- Find the value of "disputes". local display = 'disputes' local disputes if args.section then disputes = string.format( '[[%s:%s#%s|%s]]', mw.site.namespaces[protectionObj.title.namespace].talk.name, protectionObj.title.text, args.section, display ) else disputes = display end -- Make the blurb, depending on the expiry. local msg if type(protectionObj.expiry) == 'number' then msg = '${INTROFRAGMENT} or until editing %s have been resolved.' else msg = '${INTROFRAGMENT} until editing %s have been resolved.' end return string.format(msg, disputes) end, explanation = "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}', tooltip = '${TOOLTIPFRAGMENT} due to editing disputes', }, ecp = { description = 'For articles in topic areas authorized by' .. ' [[Wikipedia:Arbitration Committee|ArbCom]] or' .. ' meets the criteria for community use', tooltip = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}', alt = 'Extended-protected ${PAGETYPE}', }, mainpage = { description = 'For pages protected for being displayed on the [[Main Page]]', text = 'This file is currently' .. ' [[Wikipedia:This page is protected|protected]] from' .. ' editing because it is currently or will soon be displayed' .. ' on the [[Main Page]].', explanation = 'Images on the Main Page are protected due to their high' .. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.' .. '<br /><span style="font-size:90%;">' .. "'''Administrators:''' Once this image is definitely off the Main Page," .. ' please unprotect this file, or reduce to semi-protection,' .. ' as appropriate.</span>', }, office = { description = 'For pages protected by the Wikimedia Foundation', text = function (protectionObj, args) local ret = 'This ${PAGETYPE} is currently under the' .. ' scrutiny of the' .. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]' .. ' and is protected.' if protectionObj.protectionDate then ret = ret .. ' It has been protected since ${PROTECTIONDATE}.' end return ret end, explanation = "If you can edit this page, please discuss all changes and" .. " additions on the ${TALKPAGE} first. '''Do not remove protection from this" .. " page unless you are authorized by the Wikimedia Foundation to do" .. " so.'''", image = 'Office-protection-shackle.svg', }, reset = { description = 'For pages protected by the Wikimedia Foundation and' .. ' "reset" to a bare-bones version', text = 'This ${PAGETYPE} is currently under the' .. ' scrutiny of the' .. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]' .. ' and is protected.', explanation = function (protectionObj, args) local ret = '' if protectionObj.protectionDate then ret = ret .. 'On ${PROTECTIONDATE} this ${PAGETYPE} was' else ret = ret .. 'This ${PAGETYPE} has been' end ret = ret .. ' reduced to a' .. ' simplified, "bare bones" version so that it may be completely' .. ' rewritten to ensure it meets the policies of' .. ' [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].' .. ' Standard Wikipedia policies will apply to its rewriting—which' .. ' will eventually be open to all editors—and will be strictly' .. ' enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while' .. ' it is being rebuilt.\n\n' .. 'Any insertion of material directly from' .. ' pre-protection revisions of the ${PAGETYPE} will be removed, as' .. ' will any material added to the ${PAGETYPE} that is not properly' .. ' sourced. The associated talk page(s) were also cleared on the' .. " same date.\n\n" .. "If you can edit this page, please discuss all changes and" .. " additions on the ${TALKPAGE} first. '''Do not override" .. " this action, and do not remove protection from this page," .. " unless you are authorized by the Wikimedia Foundation" .. " to do so. No editor may remove this notice.'''" return ret end, image = 'Office-protection-shackle.svg', }, sock = { description = 'For pages protected due to' .. ' [[Wikipedia:Sock puppetry|sock puppetry]]', text = '${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of' .. ' [[Wikipedia:Blocking policy|blocked]] or' .. ' [[Wikipedia:Banning policy|banned users]]' .. ' from editing it.', tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from' .. ' editing it', }, template = { description = 'For [[Wikipedia:High-risk templates|high-risk]]' .. ' templates and Lua modules', text = 'This is a permanently [[Help:Protection|protected]] ${PAGETYPE},' .. ' as it is [[Wikipedia:High-risk templates|high-risk]].', explanation = 'Please discuss any changes on the ${TALKPAGE}; you may' .. ' ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] or' .. ' [[Wikipedia:Template editor|template editor]] to make an edit if' .. ' it is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by' .. ' [[Wikipedia:Consensus|consensus]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.', tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}' .. ' to prevent vandalism', alt = 'Permanently protected ${PAGETYPE}', }, usertalk = { description = 'For pages protected against disruptive edits by a' .. ' particular user', text = '${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,' .. ' such as abusing the' .. ' &#123;&#123;[[Template:unblock|unblock]]&#125;&#125; template.', explanation = 'If you cannot edit this user talk page and you need to' .. ' make a change or leave a message, you can' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for edits to a protected page' .. '|request an edit]],' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]],' .. ' [[Special:Userlogin|log in]],' .. ' or [[Special:UserLogin/signup|create an account]].', }, vandalism = { description = 'For pages protected against' .. ' [[Wikipedia:Vandalism|vandalism]]', text = '${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].', explanation = function (protectionObj, args) local ret = '' if protectionObj.level == 'sysop' then ret = ret .. "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ' end return ret .. '${EXPLANATIONBLURB}' end, tooltip = '${TOOLTIPFRAGMENT} due to vandalism', } }, move = { dispute = { description = 'For pages protected against page moves due to' .. ' disputes over the page title', explanation = "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}', image = 'Move-protection-shackle.svg' }, vandalism = { description = 'For pages protected against' .. ' [[Wikipedia:Vandalism#Page-move vandalism' .. ' |page-move vandalism]]' } }, autoreview = {}, upload = {} }, -------------------------------------------------------------------------------- -- -- GENERAL DATA TABLES -- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -- Protection blurbs -------------------------------------------------------------------------------- -- This table produces the protection blurbs available with the -- ${PROTECTIONBLURB} parameter. It is sorted by protection action and -- protection level, and is checked by the module in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. protectionBlurbs = { edit = { default = 'This ${PAGETYPE} is currently [[Help:Protection|' .. 'protected]] from editing', autoconfirmed = 'Editing of this ${PAGETYPE} by [[Wikipedia:User access' .. ' levels#New users|new]] or [[Wikipedia:User access levels#Unregistered' .. ' users|unregistered]] users is currently [[Help:Protection|disabled]]', extendedconfirmed = 'This ${PAGETYPE} is currently under extended confirmed protection', }, move = { default = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]' .. ' from [[Help:Moving a page|page moves]]' }, autoreview = { default = 'All edits made to this ${PAGETYPE} by' .. ' [[Wikipedia:User access levels#New users|new]] or' .. ' [[Wikipedia:User access levels#Unregistered users|unregistered]]' .. ' users are currently' .. ' [[Wikipedia:Pending changes|subject to review]]' }, upload = { default = 'Uploading new versions of this ${PAGETYPE} is currently disabled' } }, -------------------------------------------------------------------------------- -- Explanation blurbs -------------------------------------------------------------------------------- -- This table produces the explanation blurbs available with the -- ${EXPLANATIONBLURB} parameter. It is sorted by protection action, -- protection level, and whether the page is a talk page or not. If the page is -- a talk page it will have a talk key of "talk"; otherwise it will have a talk -- key of "subject". The table is checked in the following order: -- 1. page's protection action, page's protection level, page's talk key -- 2. page's protection action, page's protection level, default talk key -- 3. page's protection action, default protection level, page's talk key -- 4. page's protection action, default protection level, default talk key -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. explanationBlurbs = { edit = { autoconfirmed = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details. If you' .. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can' .. ' ${EDITREQUEST}, discuss changes on the ${TALKPAGE},' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details. If you' .. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].', }, extendedconfirmed = { default = 'Extended confirmed protection prevents edits from all unregistered editors' .. ' and registered users with fewer than 30 days tenure and 500 edits.' .. ' The [[Wikipedia:Protection policy#extended|policy on community use]]' .. ' specifies that extended confirmed protection can be applied to combat' .. ' disruption, if semi-protection has proven to be ineffective.' .. ' Extended confirmed protection may also be applied to enforce' .. ' [[Wikipedia:Arbitration Committee|arbitration sanctions]].' .. ' Please discuss any changes on the ${TALKPAGE}; you may' .. ' ${EDITREQUEST} to ask for uncontroversial changes supported by' .. ' [[Wikipedia:Consensus|consensus]].' }, default = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Please discuss any changes on the ${TALKPAGE}; you' .. ' may ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] to make an edit if it' .. ' is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by [[Wikipedia:Consensus' .. '|consensus]]. You may also [[Wikipedia:Requests for' .. ' page protection#Current requests for reduction in protection level' .. '|request]] that this page be unprotected.', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' You may [[Wikipedia:Requests for page' .. ' protection#Current requests for edits to a protected page|request an' .. ' edit]] to this page, or [[Wikipedia:Requests for' .. ' page protection#Current requests for reduction in protection level' .. '|ask]] for it to be unprotected.' } }, move = { default = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but cannot be moved' .. ' until unprotected. Please discuss any suggested moves on the' .. ' ${TALKPAGE} or at [[Wikipedia:Requested moves]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but cannot be moved' .. ' until unprotected. Please discuss any suggested moves at' .. ' [[Wikipedia:Requested moves]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.' } }, autoreview = { default = { default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Edits to this ${PAGETYPE} by new and unregistered users' .. ' will not be visible to readers until they are accepted by' .. ' a reviewer. To avoid the need for your edits to be' .. ' reviewed, you may' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].' }, }, upload = { default = { default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but new versions of the file' .. ' cannot be uploaded until it is unprotected. You can' .. ' request that a new version be uploaded by using a' .. ' [[Wikipedia:Edit requests|protected edit request]], or you' .. ' can [[Wikipedia:Requests for page protection|request]]' .. ' that the file be unprotected.' } } }, -------------------------------------------------------------------------------- -- Protection levels -------------------------------------------------------------------------------- -- This table provides the data for the ${PROTECTIONLEVEL} parameter, which -- produces a short label for different protection levels. It is sorted by -- protection action and protection level, and is checked in the following -- order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. protectionLevels = { edit = { default = 'protected', templateeditor = 'template-protected', extendedconfirmed = 'extended-protected', autoconfirmed = 'semi-protected', }, move = { default = 'move-protected' }, autoreview = { }, upload = { default = 'upload-protected' } }, -------------------------------------------------------------------------------- -- Images -------------------------------------------------------------------------------- -- This table lists different padlock images for each protection action and -- protection level. It is used if an image is not specified in any of the -- banner data tables, and if the page does not satisfy the conditions for using -- the ['image-filename-indef'] image. It is checked in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level images = { edit = { default = 'Full-protection-shackle.svg', templateeditor = 'Template-protection-shackle.svg', extendedconfirmed = 'Extended-protection-shackle.svg', autoconfirmed = 'Semi-protection-shackle.svg' }, move = { default = 'Move-protection-shackle.svg', }, autoreview = { default = 'Pending-protection-shackle.svg' }, upload = { default = 'Upload-protection-shackle.svg' } }, -- Pages with a reason specified in this table will show the special "indef" -- padlock, defined in the 'image-filename-indef' message, if no expiry is set. indefImageReasons = { template = true }, -------------------------------------------------------------------------------- -- Image links -------------------------------------------------------------------------------- -- This table provides the data for the ${IMAGELINK} parameter, which gets -- the image link for small padlock icons based on the page's protection action -- and protection level. It is checked in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. imageLinks = { edit = { default = 'Wikipedia:Protection policy#full', templateeditor = 'Wikipedia:Protection policy#template', extendedconfirmed = 'Wikipedia:Protection policy#extended', autoconfirmed = 'Wikipedia:Protection policy#semi' }, move = { default = 'Wikipedia:Protection policy#move' }, autoreview = { default = 'Wikipedia:Protection policy#pending' }, upload = { default = 'Wikipedia:Protection policy#upload' } }, -------------------------------------------------------------------------------- -- Padlock indicator names -------------------------------------------------------------------------------- -- This table provides the "name" attribute for the <indicator> extension tag -- with which small padlock icons are generated. All indicator tags on a page -- are displayed in alphabetical order based on this attribute, and with -- indicator tags with duplicate names, the last tag on the page wins. -- The attribute is chosen based on the protection action; table keys must be a -- protection action name or the string "default". padlockIndicatorNames = { autoreview = 'pp-autoreview', default = 'pp-default' }, -------------------------------------------------------------------------------- -- Protection categories -------------------------------------------------------------------------------- --[[ -- The protection categories are stored in the protectionCategories table. -- Keys to this table are made up of the following strings: -- -- 1. the expiry date -- 2. the namespace -- 3. the protection reason (e.g. "dispute" or "vandalism") -- 4. the protection level (e.g. "sysop" or "autoconfirmed") -- 5. the action (e.g. "edit" or "move") -- -- When the module looks up a category in the table, first it will will check to -- see a key exists that corresponds to all five parameters. For example, a -- user page semi-protected from vandalism for two weeks would have the key -- "temp-user-vandalism-autoconfirmed-edit". If no match is found, the module -- changes the first part of the key to "all" and checks the table again. It -- keeps checking increasingly generic key combinations until it finds the -- field, or until it reaches the key "all-all-all-all-all". -- -- The module uses a binary matrix to determine the order in which to search. -- This is best demonstrated by a table. In this table, the "0" values -- represent "all", and the "1" values represent the original data (e.g. -- "indef" or "file" or "vandalism"). -- -- expiry namespace reason level action -- order -- 1 1 1 1 1 1 -- 2 0 1 1 1 1 -- 3 1 0 1 1 1 -- 4 0 0 1 1 1 -- 5 1 1 0 1 1 -- 6 0 1 0 1 1 -- 7 1 0 0 1 1 -- 8 0 0 0 1 1 -- 9 1 1 1 0 1 -- 10 0 1 1 0 1 -- 11 1 0 1 0 1 -- 12 0 0 1 0 1 -- 13 1 1 0 0 1 -- 14 0 1 0 0 1 -- 15 1 0 0 0 1 -- 16 0 0 0 0 1 -- 17 1 1 1 1 0 -- 18 0 1 1 1 0 -- 19 1 0 1 1 0 -- 20 0 0 1 1 0 -- 21 1 1 0 1 0 -- 22 0 1 0 1 0 -- 23 1 0 0 1 0 -- 24 0 0 0 1 0 -- 25 1 1 1 0 0 -- 26 0 1 1 0 0 -- 27 1 0 1 0 0 -- 28 0 0 1 0 0 -- 29 1 1 0 0 0 -- 30 0 1 0 0 0 -- 31 1 0 0 0 0 -- 32 0 0 0 0 0 -- -- In this scheme the action has the highest priority, as it is the last -- to change, and the expiry has the least priority, as it changes the most. -- The priorities of the expiry, the protection level and the action are -- fixed, but the priorities of the reason and the namespace can be swapped -- through the use of the cfg.bannerDataNamespaceHasPriority table. --]] -- If the reason specified to the template is listed in this table, -- namespace data will take priority over reason data in the protectionCategories -- table. reasonsWithNamespacePriority = { vandalism = true, }, -- The string to use as a namespace key for the protectionCategories table for each -- namespace number. categoryNamespaceKeys = { [ 2] = 'user', [ 3] = 'user', [ 4] = 'project', [ 6] = 'file', [ 8] = 'mediawiki', [ 10] = 'template', [ 12] = 'project', [ 14] = 'category', [100] = 'portal', [828] = 'module', }, protectionCategories = { ['all|all|all|all|all'] = 'Wikipedia fully protected pages', ['all|all|office|all|all'] = 'Wikipedia Office-protected pages', ['all|all|reset|all|all'] = 'Wikipedia Office-protected pages', ['all|all|dmca|all|all'] = 'Wikipedia Office-protected pages', ['all|all|mainpage|all|all'] = 'Wikipedia fully-protected main page files', ['all|all|all|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages', ['all|all|ecp|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages', ['all|template|all|all|edit'] = 'Wikipedia fully protected templates', ['all|all|all|autoconfirmed|edit'] = 'Wikipedia semi-protected pages', ['indef|all|all|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected pages', ['all|all|blp|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected biographies of living people', ['temp|all|blp|autoconfirmed|edit'] = 'Wikipedia temporarily semi-protected biographies of living people', ['all|all|dispute|autoconfirmed|edit'] = 'Wikipedia pages semi-protected due to dispute', ['all|all|sock|autoconfirmed|edit'] = 'Wikipedia pages semi-protected from banned users', ['all|all|vandalism|autoconfirmed|edit'] = 'Wikipedia pages semi-protected against vandalism', ['all|category|all|autoconfirmed|edit'] = 'Wikipedia semi-protected categories', ['all|file|all|autoconfirmed|edit'] = 'Wikipedia semi-protected files', ['all|portal|all|autoconfirmed|edit'] = 'Wikipedia semi-protected portals', ['all|project|all|autoconfirmed|edit'] = 'Wikipedia semi-protected project pages', ['all|talk|all|autoconfirmed|edit'] = 'Wikipedia semi-protected talk pages', ['all|template|all|autoconfirmed|edit'] = 'Wikipedia semi-protected templates', ['all|user|all|autoconfirmed|edit'] = 'Wikipedia semi-protected user and user talk pages', ['all|all|all|templateeditor|edit'] = 'Wikipedia template-protected pages other than templates and modules', ['all|template|all|templateeditor|edit'] = 'Wikipedia template-protected templates', ['all|template|all|templateeditor|move'] = 'Wikipedia template-protected templates', -- move-protected templates ['all|all|blp|sysop|edit'] = 'Wikipedia indefinitely protected biographies of living people', ['temp|all|blp|sysop|edit'] = 'Wikipedia temporarily protected biographies of living people', ['all|all|dispute|sysop|edit'] = 'Wikipedia pages protected due to dispute', ['all|all|sock|sysop|edit'] = 'Wikipedia pages protected from banned users', ['all|all|vandalism|sysop|edit'] = 'Wikipedia pages protected against vandalism', ['all|category|all|sysop|edit'] = 'Wikipedia fully protected categories', ['all|file|all|sysop|edit'] = 'Wikipedia fully-protected files', ['all|project|all|sysop|edit'] = 'Wikipedia fully-protected project pages', ['all|talk|all|sysop|edit'] = 'Wikipedia fully-protected talk pages', ['all|template|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected templates', ['all|template|all|sysop|edit'] = 'Wikipedia fully protected templates', ['all|user|all|sysop|edit'] = 'Wikipedia fully protected user and user talk pages', ['all|module|all|all|edit'] = 'Wikipedia fully-protected modules', ['all|module|all|templateeditor|edit'] = 'Wikipedia template-protected modules', ['all|module|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected modules', ['all|module|all|autoconfirmed|edit'] = 'Wikipedia semi-protected modules', ['all|all|all|sysop|move'] = 'Wikipedia move-protected pages', ['indef|all|all|sysop|move'] = 'Wikipedia indefinitely move-protected pages', ['all|all|dispute|sysop|move'] = 'Wikipedia pages move-protected due to dispute', ['all|all|vandalism|sysop|move'] = 'Wikipedia pages move-protected due to vandalism', ['all|portal|all|sysop|move'] = 'Wikipedia move-protected portals', ['all|project|all|sysop|move'] = 'Wikipedia move-protected project pages', ['all|talk|all|sysop|move'] = 'Wikipedia move-protected talk pages', ['all|template|all|sysop|move'] = 'Wikipedia move-protected templates', ['all|user|all|sysop|move'] = 'Wikipedia move-protected user and user talk pages', ['all|all|all|autoconfirmed|autoreview'] = 'Wikipedia pending changes protected pages', ['all|file|all|all|upload'] = 'Wikipedia upload-protected files', }, -------------------------------------------------------------------------------- -- Expiry category config -------------------------------------------------------------------------------- -- This table configures the expiry category behaviour for each protection -- action. -- * If set to true, setting that action will always categorise the page if -- an expiry parameter is not set. -- * If set to false, setting that action will never categorise the page. -- * If set to nil, the module will categorise the page if: -- 1) an expiry parameter is not set, and -- 2) a reason is provided, and -- 3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck -- table. expiryCheckActions = { edit = nil, move = false, autoreview = true, upload = false }, reasonsWithoutExpiryCheck = { blp = true, template = true, }, -------------------------------------------------------------------------------- -- Pagetypes -------------------------------------------------------------------------------- -- This table produces the page types available with the ${PAGETYPE} parameter. -- Keys are namespace numbers, or the string "default" for the default value. pagetypes = { [0] = 'article', [6] = 'file', [10] = 'template', [14] = 'category', [828] = 'module', default = 'page' }, -------------------------------------------------------------------------------- -- Strings marking indefinite protection -------------------------------------------------------------------------------- -- This table contains values passed to the expiry parameter that mean the page -- is protected indefinitely. indefStrings = { ['indef'] = true, ['indefinite'] = true, ['indefinitely'] = true, ['infinite'] = true, }, -------------------------------------------------------------------------------- -- Group hierarchy -------------------------------------------------------------------------------- -- This table maps each group to all groups that have a superset of the original -- group's page editing permissions. hierarchy = { sysop = {}, reviewer = {'sysop'}, filemover = {'sysop'}, templateeditor = {'sysop'}, extendedconfirmed = {'sysop'}, autoconfirmed = {'reviewer', 'filemover', 'templateeditor', 'extendedconfirmed'}, user = {'autoconfirmed'}, ['*'] = {'user'} }, -------------------------------------------------------------------------------- -- Wrapper templates and their default arguments -------------------------------------------------------------------------------- -- This table contains wrapper templates used with the module, and their -- default arguments. Templates specified in this table should contain the -- following invocation, and no other template content: -- -- {{#invoke:Protection banner|main}} -- -- If other content is desired, it can be added between -- <noinclude>...</noinclude> tags. -- -- When a user calls one of these wrapper templates, they will use the -- default arguments automatically. However, users can override any of the -- arguments. wrappers = { ['Template:Pp'] = {}, ['Template:Pp-extended'] = {'ecp'}, ['Template:Pp-blp'] = {'blp'}, -- we don't need Template:Pp-create ['Template:Pp-dispute'] = {'dispute'}, ['Template:Pp-main-page'] = {'mainpage'}, ['Template:Pp-move'] = {action = 'move', catonly = 'yes'}, ['Template:Pp-move-dispute'] = {'dispute', action = 'move', catonly = 'yes'}, -- we don't need Template:Pp-move-indef ['Template:Pp-move-vandalism'] = {'vandalism', action = 'move', catonly = 'yes'}, ['Template:Pp-office'] = {'office'}, ['Template:Pp-office-dmca'] = {'dmca'}, ['Template:Pp-pc'] = {action = 'autoreview', small = true}, ['Template:Pp-pc1'] = {action = 'autoreview', small = true}, ['Template:Pp-reset'] = {'reset'}, ['Template:Pp-semi-indef'] = {small = true}, ['Template:Pp-sock'] = {'sock'}, ['Template:Pp-template'] = {'template', small = true}, ['Template:Pp-upload'] = {action = 'upload'}, ['Template:Pp-usertalk'] = {'usertalk'}, ['Template:Pp-vandalism'] = {'vandalism'}, }, -------------------------------------------------------------------------------- -- -- MESSAGES -- -------------------------------------------------------------------------------- msg = { -------------------------------------------------------------------------------- -- Intro blurb and intro fragment -------------------------------------------------------------------------------- -- These messages specify what is produced by the ${INTROBLURB} and -- ${INTROFRAGMENT} parameters. If the protection is temporary they use the -- intro-blurb-expiry or intro-fragment-expiry, and if not they use -- intro-blurb-noexpiry or intro-fragment-noexpiry. -- It is possible to use banner parameters in these messages. ['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.', ['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.', ['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},', ['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}', -------------------------------------------------------------------------------- -- Tooltip blurb -------------------------------------------------------------------------------- -- These messages specify what is produced by the ${TOOLTIPBLURB} parameter. -- If the protection is temporary the tooltip-blurb-expiry message is used, and -- if not the tooltip-blurb-noexpiry message is used. -- It is possible to use banner parameters in these messages. ['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.', ['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}.', ['tooltip-fragment-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},', ['tooltip-fragment-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}', -------------------------------------------------------------------------------- -- Special explanation blurb -------------------------------------------------------------------------------- -- An explanation blurb for pages that cannot be unprotected, e.g. for pages -- in the MediaWiki namespace. -- It is possible to use banner parameters in this message. ['explanation-blurb-nounprotect'] = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Please discuss any changes on the ${TALKPAGE}; you' .. ' may ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] to make an edit if it' .. ' is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by [[Wikipedia:Consensus' .. '|consensus]].', -------------------------------------------------------------------------------- -- Protection log display values -------------------------------------------------------------------------------- -- These messages determine the display values for the protection log link -- or the pending changes log link produced by the ${PROTECTIONLOG} parameter. -- It is possible to use banner parameters in these messages. ['protection-log-display'] = 'protection log', ['pc-log-display'] = 'pending changes log', -------------------------------------------------------------------------------- -- Current version display values -------------------------------------------------------------------------------- -- These messages determine the display values for the page history link -- or the move log link produced by the ${CURRENTVERSION} parameter. -- It is possible to use banner parameters in these messages. ['current-version-move-display'] = 'current title', ['current-version-edit-display'] = 'current version', -------------------------------------------------------------------------------- -- Talk page -------------------------------------------------------------------------------- -- This message determines the display value of the talk page link produced -- with the ${TALKPAGE} parameter. -- It is possible to use banner parameters in this message. ['talk-page-link-display'] = 'talk page', -------------------------------------------------------------------------------- -- Edit requests -------------------------------------------------------------------------------- -- This message determines the display value of the edit request link produced -- with the ${EDITREQUEST} parameter. -- It is possible to use banner parameters in this message. ['edit-request-display'] = 'submit an edit request', -------------------------------------------------------------------------------- -- Expiry date format -------------------------------------------------------------------------------- -- This is the format for the blurb expiry date. It should be valid input for -- the first parameter of the #time parser function. ['expiry-date-format'] = 'F j, Y "at" H:i e', -------------------------------------------------------------------------------- -- Tracking categories -------------------------------------------------------------------------------- -- These messages determine which tracking categories the module outputs. ['tracking-category-incorrect'] = 'Wikipedia pages with incorrect protection templates', ['tracking-category-template'] = 'Wikipedia template-protected pages other than templates and modules', -------------------------------------------------------------------------------- -- Images -------------------------------------------------------------------------------- -- These are images that are not defined by their protection action and protection level. ['image-filename-indef'] = 'Full-protection-shackle.svg', ['image-filename-default'] = 'Transparent.gif', -------------------------------------------------------------------------------- -- End messages -------------------------------------------------------------------------------- } -------------------------------------------------------------------------------- -- End configuration -------------------------------------------------------------------------------- } 59c408f72ce81e080cce79518231e85981ebcf3b Template:General Character 10 148 296 2022-10-07T21:57:55Z beeleth>Beeleth 0 wikitext text/x-wiki <infobox> <title source="title1"/> <image source="image1"> <caption source="caption1"/> </image> <data source="real_name"> <label>Real name</label> </data> <data source="nickname(s)"> <label>Nickname(s)</label> </data> <data source="species"> <label>Species</label> </data> <data source="gender"> <label>Gender and pronouns</label> </data> <data source="orientation"> <label>Orientation</label> </data> <group collapse="open"> <header>Meta</header> <data source="creation_date"> <label>Creation date</label> </data> <data source="voice_claim"> <label>Voice(s)</label> </data> <data source="theme_song"> <label>Theme</label> </data> </group> <group collapse="open"> <header>In-Universe</header> <data source="universe"> <label>Universe</label> </data> <data source="classification"> <label>Classification</label> </data> <data source="birth"> <label>Birth</label> </data> <data source="residence"> <label>Residence</label> </data> <data source="relationships"> <label>Relationships</label> </data> <data source="title"> <label>Title</label> </data> <data source="rank"> <label>Rank</label> </data> <data source="sector"> <label>Sector</label> </data> <data source="affiliation"> <label>Affiliation</label> </data> </group> <group collapse="closed"> <header>Potential Spoilers</header> <data source="death"> <label>Death</label> </data> <data source="cause_of_death"> <label>Cause of death</label> </data> <data source="trace"> <label>Trace(s)</label> </data> <data source="wish"> <label>Wish</label> </data> <data source="kills"> <label>Kills</label> </data> </group> </infobox> <noinclude> Example usage: <pre> {{General Character | title1=Example | image1=Example | caption1=Example | real_name=Example | nickname(s)=Example | species=Example | gender=Example | orientation=Example | creation_date=Example | voice_claim=Example | theme_song=Example | universe=Example | classification=Example | birth=Example | residence=Example | relationships=Example | title=Example | rank=Example | sector=Example | affiliation=Example | death=Example | cause_of_death=Example | trace=Example | wish=Example | kills=Example }} </pre> <templatedata> {"params":{"title1":{"suggested":true},"image1":{"suggested":true},"caption1":{"suggested":true},"real_name":{"suggested":true},"nickname(s)":{"suggested":true},"species":{"suggested":true},"gender":{"suggested":true},"orientation":{"suggested":true},"creation_date":{"suggested":true},"voice_claim":{"suggested":true},"theme_song":{"suggested":true},"universe":{"suggested":true},"classification":{"suggested":true},"birth":{"suggested":true},"residence":{"suggested":true},"relationships":{"suggested":true},"title":{"suggested":true},"rank":{"suggested":true},"sector":{"suggested":true},"affiliation":{"suggested":true},"death":{"suggested":true},"cause_of_death":{"suggested":true},"trace":{"suggested":true},"wish":{"suggested":true},"kills":{"suggested":true}},"sets":[],"maps":{}} </templatedata> </noinclude> c1f275f04c540ee81c0c5638b5499bca4aa071ad BEELETH Wiki 0 2 2 2022-10-10T18:48:46Z beeleth>Beeleth 0 wikitext text/x-wiki <mainpage-leftcolumn-start /> <div style="text-align: center; font-size: x-large; padding: 1em;">'''Welcome to the {{SITENAME}}!'''</div> [[File:Abstract.png|left|frameless]] Weary traveler, your efforts to cross [[Vast Space]] have not been in vain... the BEELETH Wiki has everything about [[BEELETH]]'s character universe all in one place so you no longer have to cross the dimensional rift for every last bit of info about any lore. [[File:Origin.png|right|frameless|153x153px]] Want to help the Wiki? A good first-hand source for up-to-date information about BEELETH's work is [https://toyhou.se/BEELETH their Toyhouse page]. Feel free to create new pages for [[:Category:Characters|characters]], [[:Category:Location|locations]], universes, and whatever else as long as they haven't been added to the Wiki. Also be sure to help keep all pages accurate by editing anything that you notice is false or outdated! ==Check these plots out!== <gallery position="center" captionalign="center" navigation="true"> File:Potpa.png|link=Pride_of_the_Peacock_Angel|[[Pride of the Peacock Angel]] File:Apoo.png|link=Animalia_Pacifica|[[Animalia Pacifica]] File:Tac.png|link=Tooth_and_Claw|[[Tooth and Claw]] </gallery> Be sure to check out the [[:Category:Plots|plot category]] for more. <!-- The gallery above works well for individual articles, but it would also be good to have another below it that points to important Category: pages. --> <mainpage-endcolumn /> <mainpage-rightcolumn-start /> {{DiscordIntegrator |id = 840663860217380894 |theme = dark |width = 300px |height = 300px }} ===Administrators=== *[[User:Beeleth|Beeleth]] *[[User:Cosmiicat|Cam]] *[[User:Bastnu|Chee]] ===To-do list === #Create all plot pages #Upload all transparent OC images ===Note=== If you're just passing by this Wiki without prior knowledge or if you have bad intentions, ''please'' be respectful and don't edit, create, or upload things without good reason. My characters are my passion.<mainpage-endcolumn /> [[Category:{{SITENAME}}]] __NOTOC__ e20598da7d00cf6100edbac27dd177291bb6c58c 3 2 2022-11-10T22:14:22Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <mainpage-leftcolumn-start /> <div style="text-align: center; font-size: x-large; padding: 1em;">'''Welcome to the {{SITENAME}}!'''</div> [[File:Abstract.png|left|frameless]] Weary traveler, your efforts to cross [[Vast Space]] have not been in vain... the BEELETH Wiki has everything about [[BEELETH]]'s character universe all in one place so you no longer have to cross the dimensional rift for every last bit of info about any lore. [[File:Origin.png|right|frameless|153x153px]] Want to help the Wiki? A good first-hand source for up-to-date information about BEELETH's work is [https://toyhou.se/BEELETH their Toyhouse page]. Feel free to create new pages for [[:Category:Characters|characters]], [[:Category:Location|locations]], universes, and whatever else as long as they haven't been added to the Wiki. Also be sure to help keep all pages accurate by editing anything that you notice is false or outdated! ==Check these plots out!== <gallery position="center" captionalign="center" navigation="true"> File:Potpa.png|link=Pride_of_the_Peacock_Angel|[[Pride of the Peacock Angel]] File:Apoo.png|link=Animalia_Pacifica|[[Animalia Pacifica]] File:Tac.png|link=Tooth_and_Claw|[[Tooth and Claw]] </gallery> Be sure to check out the [[:Category:Plots|plot category]] for more. <!-- The gallery above works well for individual articles, but it would also be good to have another below it that points to important Category: pages. --> <mainpage-endcolumn /> <mainpage-rightcolumn-start /> {{DiscordIntegrator |id = 840663860217380894 |theme = dark |width = 300px |height = 300px }} ===Administrators=== *[[User:Beeleth|Beeleth]] *[[User:Cosmiicat|Cam]] *[[User:Bastnu|Chee]] ===To-do list === #Create all plot pages #Upload all transparent OC images ===Note=== If you're just passing by this Wiki without prior knowledge or if you have bad intentions, ''please'' be respectful and don't edit, create, or upload things without good reason. My characters are my passion.<mainpage-endcolumn /> [[Category:{{SITENAME}}]] __NOTOC__ e20598da7d00cf6100edbac27dd177291bb6c58c Category:Stubs 14 103 204 2022-10-14T00:46:53Z beeleth>Beeleth 0 wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ This category contains articles that are noticeably incomplete regardless of their length and are tagged with the {{T|Stub}} template. If any of these articles seem to approach completion or manage to become complete, please remove the template from the page so they are no longer listed here. Please help our Wiki by writing in these articles if you know what you're talking about. [[Category:Maintenance]] 119791ec2b436de13f77e8541c85704c8902eaaf Module:Protection banner 828 202 401 2022-10-21T08:07:11Z beeleth>WOSlinker 0 use require('strict') instead of require('Module:No globals') Scribunto text/plain -- This module implements {{pp-meta}} and its daughter templates such as -- {{pp-dispute}}, {{pp-vandalism}} and {{pp-sock}}. -- Initialise necessary modules. require('strict') local makeFileLink = require('Module:File link')._main local effectiveProtectionLevel = require('Module:Effective protection level')._main local effectiveProtectionExpiry = require('Module:Effective protection expiry')._main local yesno = require('Module:Yesno') -- Lazily initialise modules and objects we don't always need. local getArgs, makeMessageBox, lang -- Set constants. local CONFIG_MODULE = 'Module:Protection banner/config' -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function makeCategoryLink(cat, sort) if cat then return string.format( '[[%s:%s|%s]]', mw.site.namespaces[14].name, cat, sort ) end end -- Validation function for the expiry and the protection date local function validateDate(dateString, dateType) if not lang then lang = mw.language.getContentLanguage() end local success, result = pcall(lang.formatDate, lang, 'U', dateString) if success then result = tonumber(result) if result then return result end end error(string.format( 'invalid %s: %s', dateType, tostring(dateString) ), 4) end local function makeFullUrl(page, query, display) return string.format( '[%s %s]', tostring(mw.uri.fullUrl(page, query)), display ) end -- Given a directed graph formatted as node -> table of direct successors, -- get a table of all nodes reachable from a given node (though always -- including the given node). local function getReachableNodes(graph, start) local toWalk, retval = {[start] = true}, {} while true do -- Can't use pairs() since we're adding and removing things as we're iterating local k = next(toWalk) -- This always gets the "first" key if k == nil then return retval end toWalk[k] = nil retval[k] = true for _,v in ipairs(graph[k]) do if not retval[v] then toWalk[v] = true end end end end -------------------------------------------------------------------------------- -- Protection class -------------------------------------------------------------------------------- local Protection = {} Protection.__index = Protection Protection.supportedActions = { edit = true, move = true, autoreview = true, upload = true } Protection.bannerConfigFields = { 'text', 'explanation', 'tooltip', 'alt', 'link', 'image' } function Protection.new(args, cfg, title) local obj = {} obj._cfg = cfg obj.title = title or mw.title.getCurrentTitle() -- Set action if not args.action then obj.action = 'edit' elseif Protection.supportedActions[args.action] then obj.action = args.action else error(string.format( 'invalid action: %s', tostring(args.action) ), 3) end -- Set level obj.level = args.demolevel or effectiveProtectionLevel(obj.action, obj.title) if not obj.level or (obj.action == 'move' and obj.level == 'autoconfirmed') then -- Users need to be autoconfirmed to move pages anyway, so treat -- semi-move-protected pages as unprotected. obj.level = '*' end -- Set expiry local effectiveExpiry = effectiveProtectionExpiry(obj.action, obj.title) if effectiveExpiry == 'infinity' then obj.expiry = 'indef' elseif effectiveExpiry ~= 'unknown' then obj.expiry = validateDate(effectiveExpiry, 'expiry date') end -- Set reason if args[1] then obj.reason = mw.ustring.lower(args[1]) if obj.reason:find('|') then error('reasons cannot contain the pipe character ("|")', 3) end end -- Set protection date if args.date then obj.protectionDate = validateDate(args.date, 'protection date') end -- Set banner config do obj.bannerConfig = {} local configTables = {} if cfg.banners[obj.action] then configTables[#configTables + 1] = cfg.banners[obj.action][obj.reason] end if cfg.defaultBanners[obj.action] then configTables[#configTables + 1] = cfg.defaultBanners[obj.action][obj.level] configTables[#configTables + 1] = cfg.defaultBanners[obj.action].default end configTables[#configTables + 1] = cfg.masterBanner for i, field in ipairs(Protection.bannerConfigFields) do for j, t in ipairs(configTables) do if t[field] then obj.bannerConfig[field] = t[field] break end end end end return setmetatable(obj, Protection) end function Protection:isUserScript() -- Whether the page is a user JavaScript or CSS page. local title = self.title return title.namespace == 2 and ( title.contentModel == 'javascript' or title.contentModel == 'css' ) end function Protection:isProtected() return self.level ~= '*' end function Protection:shouldShowLock() -- Whether we should output a banner/padlock return self:isProtected() and not self:isUserScript() end -- Whether this page needs a protection category. Protection.shouldHaveProtectionCategory = Protection.shouldShowLock function Protection:isTemporary() return type(self.expiry) == 'number' end function Protection:makeProtectionCategory() if not self:shouldHaveProtectionCategory() then return '' end local cfg = self._cfg local title = self.title -- Get the expiry key fragment. local expiryFragment if self.expiry == 'indef' then expiryFragment = self.expiry elseif type(self.expiry) == 'number' then expiryFragment = 'temp' end -- Get the namespace key fragment. local namespaceFragment = cfg.categoryNamespaceKeys[title.namespace] if not namespaceFragment and title.namespace % 2 == 1 then namespaceFragment = 'talk' end -- Define the order that key fragments are tested in. This is done with an -- array of tables containing the value to be tested, along with its -- position in the cfg.protectionCategories table. local order = { {val = expiryFragment, keypos = 1}, {val = namespaceFragment, keypos = 2}, {val = self.reason, keypos = 3}, {val = self.level, keypos = 4}, {val = self.action, keypos = 5} } --[[ -- The old protection templates used an ad-hoc protection category system, -- with some templates prioritising namespaces in their categories, and -- others prioritising the protection reason. To emulate this in this module -- we use the config table cfg.reasonsWithNamespacePriority to set the -- reasons for which namespaces have priority over protection reason. -- If we are dealing with one of those reasons, move the namespace table to -- the end of the order table, i.e. give it highest priority. If not, the -- reason should have highest priority, so move that to the end of the table -- instead. --]] table.insert(order, table.remove(order, self.reason and cfg.reasonsWithNamespacePriority[self.reason] and 2 or 3)) --[[ -- Define the attempt order. Inactive subtables (subtables with nil "value" -- fields) are moved to the end, where they will later be given the key -- "all". This is to cut down on the number of table lookups in -- cfg.protectionCategories, which grows exponentially with the number of -- non-nil keys. We keep track of the number of active subtables with the -- noActive parameter. --]] local noActive, attemptOrder do local active, inactive = {}, {} for i, t in ipairs(order) do if t.val then active[#active + 1] = t else inactive[#inactive + 1] = t end end noActive = #active attemptOrder = active for i, t in ipairs(inactive) do attemptOrder[#attemptOrder + 1] = t end end --[[ -- Check increasingly generic key combinations until we find a match. If a -- specific category exists for the combination of key fragments we are -- given, that match will be found first. If not, we keep trying different -- key fragment combinations until we match using the key -- "all-all-all-all-all". -- -- To generate the keys, we index the key subtables using a binary matrix -- with indexes i and j. j is only calculated up to the number of active -- subtables. For example, if there were three active subtables, the matrix -- would look like this, with 0 corresponding to the key fragment "all", and -- 1 corresponding to other key fragments. -- -- j 1 2 3 -- i -- 1 1 1 1 -- 2 0 1 1 -- 3 1 0 1 -- 4 0 0 1 -- 5 1 1 0 -- 6 0 1 0 -- 7 1 0 0 -- 8 0 0 0 -- -- Values of j higher than the number of active subtables are set -- to the string "all". -- -- A key for cfg.protectionCategories is constructed for each value of i. -- The position of the value in the key is determined by the keypos field in -- each subtable. --]] local cats = cfg.protectionCategories for i = 1, 2^noActive do local key = {} for j, t in ipairs(attemptOrder) do if j > noActive then key[t.keypos] = 'all' else local quotient = i / 2 ^ (j - 1) quotient = math.ceil(quotient) if quotient % 2 == 1 then key[t.keypos] = t.val else key[t.keypos] = 'all' end end end key = table.concat(key, '|') local attempt = cats[key] if attempt then return makeCategoryLink(attempt, title.text) end end return '' end function Protection:isIncorrect() local expiry = self.expiry return not self:shouldHaveProtectionCategory() or type(expiry) == 'number' and expiry < os.time() end function Protection:isTemplateProtectedNonTemplate() local action, namespace = self.action, self.title.namespace return self.level == 'templateeditor' and ( (action ~= 'edit' and action ~= 'move') or (namespace ~= 10 and namespace ~= 828) ) end function Protection:makeCategoryLinks() local msg = self._cfg.msg local ret = {self:makeProtectionCategory()} if self:isIncorrect() then ret[#ret + 1] = makeCategoryLink( msg['tracking-category-incorrect'], self.title.text ) end if self:isTemplateProtectedNonTemplate() then ret[#ret + 1] = makeCategoryLink( msg['tracking-category-template'], self.title.text ) end return table.concat(ret) end -------------------------------------------------------------------------------- -- Blurb class -------------------------------------------------------------------------------- local Blurb = {} Blurb.__index = Blurb Blurb.bannerTextFields = { text = true, explanation = true, tooltip = true, alt = true, link = true } function Blurb.new(protectionObj, args, cfg) return setmetatable({ _cfg = cfg, _protectionObj = protectionObj, _args = args }, Blurb) end -- Private methods -- function Blurb:_formatDate(num) -- Formats a Unix timestamp into dd Month, YYYY format. lang = lang or mw.language.getContentLanguage() local success, date = pcall( lang.formatDate, lang, self._cfg.msg['expiry-date-format'] or 'j F Y', '@' .. tostring(num) ) if success then return date end end function Blurb:_getExpandedMessage(msgKey) return self:_substituteParameters(self._cfg.msg[msgKey]) end function Blurb:_substituteParameters(msg) if not self._params then local parameterFuncs = {} parameterFuncs.CURRENTVERSION = self._makeCurrentVersionParameter parameterFuncs.EDITREQUEST = self._makeEditRequestParameter parameterFuncs.EXPIRY = self._makeExpiryParameter parameterFuncs.EXPLANATIONBLURB = self._makeExplanationBlurbParameter parameterFuncs.IMAGELINK = self._makeImageLinkParameter parameterFuncs.INTROBLURB = self._makeIntroBlurbParameter parameterFuncs.INTROFRAGMENT = self._makeIntroFragmentParameter parameterFuncs.PAGETYPE = self._makePagetypeParameter parameterFuncs.PROTECTIONBLURB = self._makeProtectionBlurbParameter parameterFuncs.PROTECTIONDATE = self._makeProtectionDateParameter parameterFuncs.PROTECTIONLEVEL = self._makeProtectionLevelParameter parameterFuncs.PROTECTIONLOG = self._makeProtectionLogParameter parameterFuncs.TALKPAGE = self._makeTalkPageParameter parameterFuncs.TOOLTIPBLURB = self._makeTooltipBlurbParameter parameterFuncs.TOOLTIPFRAGMENT = self._makeTooltipFragmentParameter parameterFuncs.VANDAL = self._makeVandalTemplateParameter self._params = setmetatable({}, { __index = function (t, k) local param if parameterFuncs[k] then param = parameterFuncs[k](self) end param = param or '' t[k] = param return param end }) end msg = msg:gsub('${(%u+)}', self._params) return msg end function Blurb:_makeCurrentVersionParameter() -- A link to the page history or the move log, depending on the kind of -- protection. local pagename = self._protectionObj.title.prefixedText if self._protectionObj.action == 'move' then -- We need the move log link. return makeFullUrl( 'Special:Log', {type = 'move', page = pagename}, self:_getExpandedMessage('current-version-move-display') ) else -- We need the history link. return makeFullUrl( pagename, {action = 'history'}, self:_getExpandedMessage('current-version-edit-display') ) end end function Blurb:_makeEditRequestParameter() local mEditRequest = require('Module:Submit an edit request') local action = self._protectionObj.action local level = self._protectionObj.level -- Get the edit request type. local requestType if action == 'edit' then if level == 'autoconfirmed' then requestType = 'semi' elseif level == 'extendedconfirmed' then requestType = 'extended' elseif level == 'templateeditor' then requestType = 'template' end end requestType = requestType or 'full' -- Get the display value. local display = self:_getExpandedMessage('edit-request-display') return mEditRequest._link{type = requestType, display = display} end function Blurb:_makeExpiryParameter() local expiry = self._protectionObj.expiry if type(expiry) == 'number' then return self:_formatDate(expiry) else return expiry end end function Blurb:_makeExplanationBlurbParameter() -- Cover special cases first. if self._protectionObj.title.namespace == 8 then -- MediaWiki namespace return self:_getExpandedMessage('explanation-blurb-nounprotect') end -- Get explanation blurb table keys local action = self._protectionObj.action local level = self._protectionObj.level local talkKey = self._protectionObj.title.isTalkPage and 'talk' or 'subject' -- Find the message in the explanation blurb table and substitute any -- parameters. local explanations = self._cfg.explanationBlurbs local msg if explanations[action][level] and explanations[action][level][talkKey] then msg = explanations[action][level][talkKey] elseif explanations[action][level] and explanations[action][level].default then msg = explanations[action][level].default elseif explanations[action].default and explanations[action].default[talkKey] then msg = explanations[action].default[talkKey] elseif explanations[action].default and explanations[action].default.default then msg = explanations[action].default.default else error(string.format( 'could not find explanation blurb for action "%s", level "%s" and talk key "%s"', action, level, talkKey ), 8) end return self:_substituteParameters(msg) end function Blurb:_makeImageLinkParameter() local imageLinks = self._cfg.imageLinks local action = self._protectionObj.action local level = self._protectionObj.level local msg if imageLinks[action][level] then msg = imageLinks[action][level] elseif imageLinks[action].default then msg = imageLinks[action].default else msg = imageLinks.edit.default end return self:_substituteParameters(msg) end function Blurb:_makeIntroBlurbParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('intro-blurb-expiry') else return self:_getExpandedMessage('intro-blurb-noexpiry') end end function Blurb:_makeIntroFragmentParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('intro-fragment-expiry') else return self:_getExpandedMessage('intro-fragment-noexpiry') end end function Blurb:_makePagetypeParameter() local pagetypes = self._cfg.pagetypes return pagetypes[self._protectionObj.title.namespace] or pagetypes.default or error('no default pagetype defined', 8) end function Blurb:_makeProtectionBlurbParameter() local protectionBlurbs = self._cfg.protectionBlurbs local action = self._protectionObj.action local level = self._protectionObj.level local msg if protectionBlurbs[action][level] then msg = protectionBlurbs[action][level] elseif protectionBlurbs[action].default then msg = protectionBlurbs[action].default elseif protectionBlurbs.edit.default then msg = protectionBlurbs.edit.default else error('no protection blurb defined for protectionBlurbs.edit.default', 8) end return self:_substituteParameters(msg) end function Blurb:_makeProtectionDateParameter() local protectionDate = self._protectionObj.protectionDate if type(protectionDate) == 'number' then return self:_formatDate(protectionDate) else return protectionDate end end function Blurb:_makeProtectionLevelParameter() local protectionLevels = self._cfg.protectionLevels local action = self._protectionObj.action local level = self._protectionObj.level local msg if protectionLevels[action][level] then msg = protectionLevels[action][level] elseif protectionLevels[action].default then msg = protectionLevels[action].default elseif protectionLevels.edit.default then msg = protectionLevels.edit.default else error('no protection level defined for protectionLevels.edit.default', 8) end return self:_substituteParameters(msg) end function Blurb:_makeProtectionLogParameter() local pagename = self._protectionObj.title.prefixedText if self._protectionObj.action == 'autoreview' then -- We need the pending changes log. return makeFullUrl( 'Special:Log', {type = 'stable', page = pagename}, self:_getExpandedMessage('pc-log-display') ) else -- We need the protection log. return makeFullUrl( 'Special:Log', {type = 'protect', page = pagename}, self:_getExpandedMessage('protection-log-display') ) end end function Blurb:_makeTalkPageParameter() return string.format( '[[%s:%s#%s|%s]]', mw.site.namespaces[self._protectionObj.title.namespace].talk.name, self._protectionObj.title.text, self._args.section or 'top', self:_getExpandedMessage('talk-page-link-display') ) end function Blurb:_makeTooltipBlurbParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('tooltip-blurb-expiry') else return self:_getExpandedMessage('tooltip-blurb-noexpiry') end end function Blurb:_makeTooltipFragmentParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('tooltip-fragment-expiry') else return self:_getExpandedMessage('tooltip-fragment-noexpiry') end end function Blurb:_makeVandalTemplateParameter() return mw.getCurrentFrame():expandTemplate{ title="vandal-m", args={self._args.user or self._protectionObj.title.baseText} } end -- Public methods -- function Blurb:makeBannerText(key) -- Validate input. if not key or not Blurb.bannerTextFields[key] then error(string.format( '"%s" is not a valid banner config field', tostring(key) ), 2) end -- Generate the text. local msg = self._protectionObj.bannerConfig[key] if type(msg) == 'string' then return self:_substituteParameters(msg) elseif type(msg) == 'function' then msg = msg(self._protectionObj, self._args) if type(msg) ~= 'string' then error(string.format( 'bad output from banner config function with key "%s"' .. ' (expected string, got %s)', tostring(key), type(msg) ), 4) end return self:_substituteParameters(msg) end end -------------------------------------------------------------------------------- -- BannerTemplate class -------------------------------------------------------------------------------- local BannerTemplate = {} BannerTemplate.__index = BannerTemplate function BannerTemplate.new(protectionObj, cfg) local obj = {} obj._cfg = cfg -- Set the image filename. local imageFilename = protectionObj.bannerConfig.image if imageFilename then obj._imageFilename = imageFilename else -- If an image filename isn't specified explicitly in the banner config, -- generate it from the protection status and the namespace. local action = protectionObj.action local level = protectionObj.level local namespace = protectionObj.title.namespace local reason = protectionObj.reason -- Deal with special cases first. if ( namespace == 10 or namespace == 828 or reason and obj._cfg.indefImageReasons[reason] ) and action == 'edit' and level == 'sysop' and not protectionObj:isTemporary() then -- Fully protected modules and templates get the special red "indef" -- padlock. obj._imageFilename = obj._cfg.msg['image-filename-indef'] else -- Deal with regular protection types. local images = obj._cfg.images if images[action] then if images[action][level] then obj._imageFilename = images[action][level] elseif images[action].default then obj._imageFilename = images[action].default end end end end return setmetatable(obj, BannerTemplate) end function BannerTemplate:renderImage() local filename = self._imageFilename or self._cfg.msg['image-filename-default'] or 'Transparent.gif' return makeFileLink{ file = filename, size = (self.imageWidth or 20) .. 'px', alt = self._imageAlt, link = self._imageLink, caption = self.imageCaption } end -------------------------------------------------------------------------------- -- Banner class -------------------------------------------------------------------------------- local Banner = setmetatable({}, BannerTemplate) Banner.__index = Banner function Banner.new(protectionObj, blurbObj, cfg) local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb. obj.imageWidth = 40 obj.imageCaption = blurbObj:makeBannerText('alt') -- Large banners use the alt text for the tooltip. obj._reasonText = blurbObj:makeBannerText('text') obj._explanationText = blurbObj:makeBannerText('explanation') obj._page = protectionObj.title.prefixedText -- Only makes a difference in testing. return setmetatable(obj, Banner) end function Banner:__tostring() -- Renders the banner. makeMessageBox = makeMessageBox or require('Module:Message box').main local reasonText = self._reasonText or error('no reason text set', 2) local explanationText = self._explanationText local mbargs = { page = self._page, type = 'protection', image = self:renderImage(), text = string.format( "'''%s'''%s", reasonText, explanationText and '<br />' .. explanationText or '' ) } return makeMessageBox('mbox', mbargs) end -------------------------------------------------------------------------------- -- Padlock class -------------------------------------------------------------------------------- local Padlock = setmetatable({}, BannerTemplate) Padlock.__index = Padlock function Padlock.new(protectionObj, blurbObj, cfg) local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb. obj.imageWidth = 20 obj.imageCaption = blurbObj:makeBannerText('tooltip') obj._imageAlt = blurbObj:makeBannerText('alt') obj._imageLink = blurbObj:makeBannerText('link') obj._indicatorName = cfg.padlockIndicatorNames[protectionObj.action] or cfg.padlockIndicatorNames.default or 'pp-default' return setmetatable(obj, Padlock) end function Padlock:__tostring() local frame = mw.getCurrentFrame() -- The nowiki tag helps prevent whitespace at the top of articles. return frame:extensionTag{name = 'nowiki'} .. frame:extensionTag{ name = 'indicator', args = {name = self._indicatorName}, content = self:renderImage() } end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p = {} function p._exportClasses() -- This is used for testing purposes. return { Protection = Protection, Blurb = Blurb, BannerTemplate = BannerTemplate, Banner = Banner, Padlock = Padlock, } end function p._main(args, cfg, title) args = args or {} cfg = cfg or require(CONFIG_MODULE) local protectionObj = Protection.new(args, cfg, title) local ret = {} -- If a page's edit protection is equally or more restrictive than its -- protection from some other action, then don't bother displaying anything -- for the other action (except categories). if not yesno(args.catonly) and (protectionObj.action == 'edit' or args.demolevel or not getReachableNodes( cfg.hierarchy, protectionObj.level )[effectiveProtectionLevel('edit', protectionObj.title)]) then -- Initialise the blurb object local blurbObj = Blurb.new(protectionObj, args, cfg) -- Render the banner if protectionObj:shouldShowLock() then ret[#ret + 1] = tostring( (yesno(args.small) and Padlock or Banner) .new(protectionObj, blurbObj, cfg) ) end end -- Render the categories if yesno(args.category) ~= false then ret[#ret + 1] = protectionObj:makeCategoryLinks() end return table.concat(ret) end function p.main(frame, cfg) cfg = cfg or require(CONFIG_MODULE) -- Find default args, if any. local parent = frame.getParent and frame:getParent() local defaultArgs = parent and cfg.wrappers[parent:getTitle():gsub('/sandbox$', '')] -- Find user args, and use the parent frame if we are being called from a -- wrapper template. getArgs = getArgs or require('Module:Arguments').getArgs local userArgs = getArgs(frame, { parentOnly = defaultArgs, frameOnly = not defaultArgs }) -- Build the args table. User-specified args overwrite default args. local args = {} for k, v in pairs(defaultArgs or {}) do args[k] = v end for k, v in pairs(userArgs) do args[k] = v end return p._main(args, cfg) end return p 894f0884d4c2da1ce19d385b96f59af654b0946a Template:Infobox/doc 10 230 459 2022-10-22T16:10:50Z beeleth>Paine Ellsworth 0 High-use template and update /doc wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{distinguish|Template:Userbox}} {{#ifeq:{{SUBPAGENAME}}|sandbox||{{High-use}}}} {{Lua|Module:Infobox}} {{Parameter names example |name={{PAGENAME}} <!--|child |subbox |decat--> |title |above |subheader |subheader1 |subheader2={{{subheader2}}}<br/>...... |image|caption |image1|caption1 |image2|caption2={{{caption2}}}<br/>...... |header1=<div style="border-top:1px dashed #ccc;">{{{header1}}}<br/>{{nobold|( ''or'' )}}</div> |label2={{{label1}}} |data2={{{data1}}} |data3=( ''or'' ) |data4=<div style="padding-bottom:0.25em;border-bottom:1px dashed #ccc;">{{{data1}}}</div> |header5={{{header2}}}<br/><div style="padding:0.75em 0 0.5em;">{{nobold|( ''or'' )}}</div> |label6={{{label2}}} |data6={{{data2}}} |data7=( ''or'' ) |data8=<div style="padding-bottom:0.25em;border-bottom:1px dashed #ccc;">{{{data2}}}</div> |data9=<div style="padding:0.75em 0 0.5em;">( ''etc'' )</div> |below }} This template is intended as a meta template: a template used for constructing other templates. '''Note''': In general, it is not meant for use directly in an article, but can be used on a one-off basis if required. [[Help:Infobox]] contains an introduction about the recommended content and design of infoboxes; [[Wikipedia:Manual of Style/Infoboxes]] contains additional style guidelines. See [[WP:List of infoboxes]] and [[:Category:Infobox templates]] for lists of prepared topic-specific infoboxes. == Usage == {{tlf|Infobox}} is a meta-template: used to organise an actual <nowiki>{{Infobox sometopic}}</nowiki> template (like {{tl|Infobox building}}). For <code><nowiki>[[Template:Infobox sometopic]]</nowiki></code>, template code then looks like this, simplified: <pre> {{Infobox | name = {{{name|{{PAGENAME}}}}} | image = {{{image|}}} | caption1 = {{{caption|}}} | label1 = Former names | data1 = {{{former_names|}}} | header2 = General information | label3 = Status | data3 = {{{status|}}} ... <!-- etc. --> }} </pre> == Optional control parameters == ; name : If this parameter is present, "view/talk/edit" links will be added to the bottom of the infobox pointing to the named page, prefixed by <code>Template:</code> if no namespace is specified. You may use the value <nowiki>{{subst:PAGENAME}}</nowiki>; however, this is rarely what you want because it will send users clicking these links in an infobox to the template code rather than the data in the infobox they probably want to change. ; child : See the [[#Embedding|Embedding]] section for details. If this is set to "yes", this child infobox should be titled but have no name parameter. This parameter is empty by default, set it to "yes" to activate it. ; subbox : See the [[#Subboxes|Subboxes]] section for details. If this is set to "yes", this subbox should be titled but have no name parameter. This parameter is empty by default, set to "yes" to activate it. It has no effect if the '''child''' parameter is also set to "yes". ; decat : If this is set to "yes", the current page will not be autocategorized in a maintenance category when the generated infobox has some problems or no visible data section. Leave empty by default or set to "yes" to activate it. ; autoheaders: If this is set to any non-blank value, headers which are not followed by data fields are suppressed. See the "[[#Hiding headers when all its data fields are empty|hiding headers when all its data fields are empty]]" section for more details. == Content parameters == === Title === There are two different ways to put a title on an infobox. One contains the title inside the infobox's border in the uppermost cell of the table, the other puts it as a caption on top of the table. You can use them both together, or just one or the other, or neither (though this is not recommended): ; title : Text to put in the caption over the top of the table (or as section header before the whole content of this table, if this is a child infobox). For [[Wikipedia:Manual of Style/Accessibility#Tables|accessibility reasons]], this is the most recommended alternative. ; above : Text to put within the uppermost cell of the table. ; subheader(n) : additional title fields which fit below {{{title}}} and {{{above}}}, but before images. Examples: {{Infobox | name = Infobox/doc | title = Text in caption over infobox | subheader = Subheader of the infobox | header = (the rest of the infobox goes here) }} <pre style="overflow:auto"> {{Infobox | name = {{subst:PAGENAME}} | title = Text in caption over infobox | subheader = Subheader of the infobox | header = (the rest of the infobox goes here) }} </pre>{{clear}} {{Infobox | name = Infobox/doc | above = Text in uppermost cell of infobox | subheader = Subheader of the infobox | subheader2 = Second subheader of the infobox | header = (the rest of the infobox goes here) }} <pre style="overflow:auto"> {{Infobox | name = {{subst:PAGENAME}} | above = Text in uppermost cell of infobox | subheader = Subheader of the infobox | subheader2 = Second subheader of the infobox | header = (the rest of the infobox goes here) }} </pre>{{clear}} === Illustration images === ; image(n) : images to display at the top of the template. Use full image syntax, for example <nowiki>[[File:example.png|200px|alt=Example alt text]]</nowiki>. Image is centered by default. See [[WP:ALT]] for more on alt text. ; caption(n) : Text to put underneath the images. === Main data === ; header(n) : Text to use as a header in row n. ; label(n) : Text to use as a label in row n. ; data(n) : Text to display as data in row n. Note: for any given value for (n), not all combinations of parameters are permitted. The presence of a {{para|header''(n)''}} will cause the corresponding {{para|data''(n)''}} (and {{para|rowclass''(n)''}} {{para|label''(n)''}}, see below) to be ignored; the absence of a {{para|data''(n)''}} will cause the corresponding {{para|label''(n)''}} to be ignored. Valid combinations for any single row are: * {{para|class''(n)''}} {{para|header''(n)''}} * {{para|rowclass''(n)''}} {{para|class''(n)''}} {{para|data''(n)''}} * {{para|rowclass''(n)''}} {{para|label''(n)''}} {{para|class''(n)''}} {{para|data''(n)''}} See the rendering of header4, label4, and data4 in the [[#Examples|Examples]] section below. ==== Number ranges ==== To allow flexibility when the layout of an infobox is changed, it may be helpful when developing an infobox to use non-contiguous numbers for header and label/data rows. Parameters for new rows can then be inserted in future without having to renumber existing parameters. For example: <pre style="overflow:auto"> | header3 = Section 1 | label5 = Label A | data5 = Data A | label7 = Label C | data7 = Data C | header10 = Section 2 | label12 = Label D | data12 = Data D </pre>{{clear}} It is also possible to automatically renumber parameter names by using [[User:Frietjes/infoboxgap.js]] or [[Module:IncrementParams]]. There is no upper limit on numbers but there must be at most 50 between each used number. ==== Making data fields optional ==== A row with a label but no data is not displayed. This allows for the easy creation of optional infobox content rows. To make a row optional use a parameter that defaults to an empty string, like so: <pre style="overflow:auto"> | label5 = Population | data5 = {{{population|}}} </pre>{{clear}} This way if an article doesn't define the population parameter in its infobox the row won't be displayed. For more complex fields with pre-formatted contents that would still be present even if the parameter wasn't set, you can wrap it all in an "#if" statement to make the whole thing vanish when the parameter is not used. For instance, the "#if" statement in the following example reads "#if:the parameter ''mass'' has been supplied |then display it, followed by 'kg'": <pre style="overflow:auto"> | label6 = Mass | data6 = {{ #if: {{{mass|}}} | {{{mass}}} kg }} </pre>{{clear}} For more on #if, see [[meta:ParserFunctions##if:|here]]. ==== Hiding headers when all its data fields are empty ==== You can also make headers automatically hide when their section is empty (has no data-row showing). Consider this situation: {{Infobox | title = Example: header with & without data | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = Header5 with data below | label6 = label6 text | data6 = Some value }} <pre style="overflow:auto"> {{Infobox | title = Example: header with & without data | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = Header5 with data below | label6 = label6 text | data6 = Some value }} </pre>{{clear}} If you want hide the header when no {{para|data''N''}} values are present, use '''{{para|autoheaders|y}}''': {{Infobox | title = Example: header with & without data | autoheaders = y | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = Header5 with data below | label6 = label6 text | data6 = Some value }} <syntaxhighlight lang="moin" style="overflow:auto"> {{Infobox | title = Example: header with & without data | autoheaders = y | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = Header5 with data below | label6 = label6 text | data6 = Some value }} </syntaxhighlight>{{clear}} So, header1 will be shown if any of item1, item2, or item3 is defined. If none of the three parameters are defined the header won't be shown and no empty row appears before the next visible content. Note: if the data has empty css elements, like {{para|data|2=&lt;span style="background:yellow;">&lt;/span>}}, this will be treated as non-empty (having data). If {{para|autoheaders|y}} but there are items that you ''do not'' want to trigger a header, place {{para|headerX|_BLANK_}}. This will serve as an empty header and separate it from the subsequent items. {{Infobox | title = Example: blank header with & without data | autoheaders = y | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = _BLANK_ | label6 = label6 text | data6 = Some value, but does not trigger header1 or show header5 }} <syntaxhighlight lang="moin" style="overflow:auto"> {{Infobox | title = Example: header with & without data | autoheaders = y | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = _BLANK_ | label6 = label6 text | data6 = Some value, but does not trigger header1 or show header5 }} </syntaxhighlight>{{clear}} === Footer === ; below : Text to put in the bottom cell. The bottom cell is intended for footnotes, see-also, and other such information. == Presentation parameters == === Italic titles === Titles of articles with infoboxes may be made italic, in line with [[WP:ITALICTITLE]], by passing the <code>italic title</code> parameter. * Turn on italic titles by passing {{para|italic title|<nowiki>{{{italic title|}}}</nowiki>}} from the infobox. * Turn off by default (notably because only Latin script may be safely rendered in this style and italic may be needed to distinguish foreign language from local English language only in that script, but would be difficult to read for other scripts) but allow some instances to be made italic by passing {{para|italic title|<nowiki>{{{italic title|no}}}</nowiki>}} * Do not make any titles italic by not passing the parameter at all. === CSS styling === {{div col}} ; bodystyle : Applies to the infobox table as a whole ; titlestyle : Applies only to the title caption. Adding a background color is usually inadvisable since the text is rendered "outside" the infobox. ; abovestyle : Applies only to the "above" cell at the top. The default style has font-size:125%; since this cell is usually used for a title, if you want to use the above cell for regular-sized text include "font-size:100%;" in the abovestyle. ; imagestyle : Applies to the cell the image is in. This includes the text of the image caption, but you should set text properties with captionstyle instead of imagestyle in case the caption is moved out of this cell in the future. ; captionstyle : Applies to the text of the image caption. ; rowstyle(n) : This parameter is inserted into the <code>style</code> attribute for the specified row. ; headerstyle : Applies to all header cells ; subheaderstyle : Applies to all subheader cells ; labelstyle : Applies to all label cells ; datastyle : Applies to all data cells ; belowstyle : Applies only to the below cell {{div col end}} === HTML classes and microformats === {{div col}} ; bodyclass : This parameter is inserted into the <code>class</code> attribute for the infobox as a whole. ; titleclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''title''' caption. <!-- currently not implemented in Lua module ; aboverowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''above''' cell is on. --> ; aboveclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''above''' cell. ; subheaderrowclass(n) : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''subheader''' is on. ; subheaderclass(n) : This parameter is inserted into the <code>class</code> attribute for the infobox's '''subheader'''. ; imagerowclass(n) : These parameters are inserted into the <code>class</code> attribute for the complete table row their respective '''image''' is on. ; imageclass : This parameter is inserted into the <code>class</code> attribute for the '''image'''. ; rowclass(n) : This parameter is inserted into the <code>class</code> attribute for the specified row including the '''label''' and '''data''' cells. ; class(n) : This parameter is inserted into the <code>class</code> attribute for the '''data''' cell of the specified row. If there's no '''data''' cell it has no effect. <!-- currently not implemented in Lua module ; belowrowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''below''' cell is on. --> ; belowclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''below''' cell. {{div col end}} This template supports the addition of microformat information. This is done by adding "class" attributes to various data cells, indicating what kind of information is contained within. Multiple class names may be specified, separated by spaces, some of them being used as selectors for custom styling according to a project policy or to the skin selected in user preferences, others being used for microformats. To flag an infobox as containing [[hCard]] information, for example, add the following parameter: <pre style="overflow:auto"> | bodyclass = vcard </pre>{{clear}} And for each row containing a data cell that's part of the vcard, add a corresponding class parameter: <pre style="overflow:auto"> | class1 = fn | class2 = org | class3 = tel </pre>{{clear}} ...and so forth. "above" and "title" can also be given classes, since these are usually used to display the name of the subject of the infobox. See [[Wikipedia:WikiProject Microformats]] for more information on adding microformat information to Wikipedia, and [[microformat]] for more information on microformats in general. == Examples == Notice how the row doesn't appear in the displayed infobox when a '''label''' is defined without an accompanying '''data''' cell, and how all of them are displayed when a '''header''' is defined on the same row as a '''data''' cell. Also notice that '''subheaders''' are not bold by default like the '''headers''' used to split the main data section, because this role is meant to be for the '''above''' cell : {{Infobox |name = Infobox/doc |bodystyle = |titlestyle = |abovestyle = background:#cfc; |subheaderstyle = |title = Test Infobox |above = Above text |subheader = Subheader above image |subheader2 = Second subheader |imagestyle = |captionstyle = |image = [[File:Example-serious.jpg|200px|alt=Example alt text]] |caption = Caption displayed below File:Example-serious.jpg |headerstyle = background:#ccf; |labelstyle = background:#ddf; |datastyle = |header1 = Header defined alone | label1 = | data1 = |header2 = | label2 = Label defined alone does not display (needs data, or is suppressed) | data2 = |header3 = | label3 = | data3 = Data defined alone |header4 = All three defined (header, label, data, all with same number) | label4 = does not display (same number as a header) | data4 = does not display (same number as a header) |header5 = | label5 = Label and data defined (label) | data5 = Label and data defined (data) |belowstyle = background:#ddf; |below = Below text }} <syntaxhighlight lang="Sass" style="overflow:auto" highlight="15"> {{Infobox |name = {{subst:PAGENAME}} |bodystyle = |titlestyle = |abovestyle = background:#cfc; |subheaderstyle = |title = Test Infobox |above = Above text |subheader = Subheader above image |subheader2 = Second subheader |imagestyle = |captionstyle = | image = [[File:Example-serious.jpg|200px|alt=Example alt text]] |caption = Caption displayed below Example-serious.jpg |headerstyle = background:#ccf; |labelstyle = background:#ddf; |datastyle = |header1 = Header defined alone | label1 = | data1 = |header2 = | label2 = Label defined alone does not display (needs data, or is suppressed) | data2 = |header3 = | label3 = | data3 = Data defined alone |header4 = All three defined (header, label, data, all with same number) | label4 = does not display (same number as a header) | data4 = does not display (same number as a header) |header5 = | label5 = Label and data defined (label) | data5 = Label and data defined (data) |belowstyle = background:#ddf; |below = Below text }} </syntaxhighlight>{{clear}} For this example, the {{para|bodystyle}} and {{para|labelstyle}} parameters are used to adjust the infobox width and define a default width for the column of labels: {{Infobox |name = Infobox/doc |bodystyle = width:20em |titlestyle = |title = Test Infobox |headerstyle = |labelstyle = width:33% |datastyle = |header1 = | label1 = Label 1 | data1 = Data 1 |header2 = | label2 = Label 2 | data2 = Data 2 |header3 = | label3 = Label 3 | data3 = Data 3 |header4 = Header 4 | label4 = | data4 = |header5 = | label5 = Label 5 | data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. |belowstyle = |below = Below text }} <syntaxhighlight lang="sass" highlight="3,9" style="overflow: auto"> {{Infobox |name = {{subst:PAGENAME}} |bodystyle = width:20em |titlestyle = |title = Test Infobox |headerstyle = |labelstyle = width:33% |datastyle = |header1 = | label1 = Label 1 | data1 = Data 1 |header2 = | label2 = Label 2 | data2 = Data 2 |header3 = | label3 = Label 3 | data3 = Data 3 |header4 = Header 4 | label4 = | data4 = |header5 = | label5 = Label 5 | data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. |belowstyle = |below = Below text }} </syntaxhighlight>{{clear}} == Embedding == <!--Linked from [[Template:Subinfobox bodystyle/doc]]--> One infobox template can be embedded into another using the {{para|child}} parameter. This feature can be used to create a modular infobox, or to create better-defined logical sections. Long ago, it was necessary to use embedding in order to create infoboxes with more than 99 rows; but nowadays there's no limit to the number of rows that can be defined in a single instance of <code><nowiki>{{infobox}}</nowiki></code>. {{Infobox | title = Top level title | data1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | data2 = {{Infobox | decat = yes | child = yes |title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} <pre style="overflow:auto"> {{Infobox | title = Top level title | data1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | data2 = {{Infobox | decat = yes | child = yes |title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} </pre>{{clear}} Note, in the examples above, the child infobox is placed in a <code>data</code> field, not a <code>header</code> field. Notice that the section subheadings are not in bold font if bolding is not explicitly specified. To obtain bold section headings, place the child infobox in a '''header''' field (but not in a '''label''' field because it would not be displayed!), either using {{Infobox | title = Top level title | header1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | header2 = {{Infobox | decat = yes | child = yes | title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} <pre style="overflow:auto"> {{Infobox | title = Top level title | header1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | header2 = {{Infobox | decat = yes | child = yes | title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} </pre>{{clear}} or, {{Infobox | title = Top level title | header1 = First subsection {{Infobox | decat = yes | child = yes | label1 = Label 1.1 | data1 = Data 1.1 }} | header2 = Second subsection {{Infobox | decat = yes | child = yes | label1 = Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} <pre style="overflow:auto"> {{Infobox | title = Top level title | header1 = First subsection {{Infobox | decat = yes | child = yes | label1 = Label 1.1 | data1 = Data 1.1 }} | header2 = Second subsection {{Infobox | decat = yes | child = yes | label1 = Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} </pre>{{clear}} Note that omitting the {{para|title}} parameter, and not including any text preceding the embedded infobox, may result in spurious blank table rows, creating gaps in the visual presentation. The garbage output can be suppressed using {{para|rowstyleN|display: none}}, replacing N with the data/header number. [[Wikipedia:WikiProject Infoboxes/embed]] includes some links to Wikipedia articles which include infoboxes embedded within other infoboxes. == Subboxes == An alternative method for embedding is to use {{para|subbox|yes}}, which removes the outer border from the infobox, but preserves the interior structure. One feature of this approach is that the parent and child boxes need not have the same structure, and the label and data fields are not aligned between the parent and child boxes because they are not in the same parent table. {{Infobox | headerstyle = background-color:#eee; | labelstyle = background-color:#eee; | header1 = Main 1 | header2 = Main 2 | data3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | data4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | label5 = Label 5 | data5 = Data 5 | header6 = Main 6 }} <syntaxhighlight lang="sass" style="overflow:auto"> {{Infobox | headerstyle = background-color:#eee; | labelstyle = background-color:#eee; | header1 = Main 1 | header2 = Main 2 | data3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | data4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | label5 = Label 5 | data5 = Data 5 | header6 = Main 6 }} </syntaxhighlight>{{clear}} Similar embedding techniques may be used within content parameters of some other templates generating tables (such as [[:Template:Sidebar|Sidebar]]) : {{Sidebar | navbar = off | headingstyle = background-color:#eee; | heading1 = Heading 1 | heading2 = Heading 2 | content3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | content4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | heading5 = Heading 5 }} <syntaxhighlight lang="sass" style="overflow:auto"> {{Sidebar | navbar = off | headingstyle = background-color:#eee; | heading1 = Heading 1 | heading2 = Heading 2 | content3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | content4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | heading5 = Heading 5 }} </syntaxhighlight>{{clear}} Note that the default padding of the parent data cell containing each subbox is still visible, so the subboxes are slightly narrower than the parent box and there's a higher vertical spacing between standard cells of the parent box than between cells of distinct subboxes. == Controlling line-breaking in embedded bulletless lists == Template {{tlx|nbsp}} may be used with {{tlx|wbr}} and {{tlx|nowrap}} to control line-breaking in bulletless lists embedded in infoboxes (e.g. cast list in {{tlx|Infobox film}}), to prevent wrapped long entries from being confused with multiple entries. See [[Template:Wbr/doc#Controlling line-breaking in infoboxes]] for details. == Full blank syntax == (Note: there is no limit to the number of possible rows; only 20 are given below since infoboxes larger than that will be relatively rare. Just extend the numbering as needed. The microformat "class" parameters are also omitted as they are not commonly used.) <pre style="overflow:auto"> {{Infobox | name = {{subst:PAGENAME}} | child = {{{child|}}} | subbox = {{{subbox|}}} | italic title = {{{italic title|no}}} | templatestyles = | child templatestyles = | grandchild templatestyles = | bodystyle = | titlestyle = | abovestyle = | subheaderstyle = | title = | above = | subheader = | imagestyle = | captionstyle = | image = | caption = | image2 = | caption2 = | headerstyle = | labelstyle = | datastyle = | header1 = | label1 = | data1 = | header2 = | label2 = | data2 = | header3 = | label3 = | data3 = | header4 = | label4 = | data4 = | header5 = | label5 = | data5 = | header6 = | label6 = | data6 = | header7 = | label7 = | data7 = | header8 = | label8 = | data8 = | header9 = | label9 = | data9 = | header10 = | label10 = | data10 = | header11 = | label11 = | data11 = | header12 = | label12 = | data12 = | header13 = | label13 = | data13 = | header14 = | label14 = | data14 = | header15 = | label15 = | data15 = | header16 = | label16 = | data16 = | header17 = | label17 = | data17 = | header18 = | label18 = | data18 = | header19 = | label19 = | data19 = | header20 = | label20 = | data20 = | belowstyle = | below = }} </pre>{{clear}} {{Help:Infobox/user style}} == Porting to other MediaWikis == The infobox template requires the [[:mw:Extension:Scribunto|Scribunto]] extension. [[Wikipedia:WikiProject Transwiki|WikiProject Transwiki]] has a version of this template that has been modified to work on other MediaWikis. == TemplateData == {{TemplateData header}} <templatedata> { "description": "This template is intended as a meta template, a template used for constructing other templates. In general, it is not meant for use directly in an article but can be used on a one-off basis if required.", "format": "{{_\n| ________________ = _\n}}\n", "params": { "title": { "label": "Title", "description": "Title displayed above the infobox", "type": "string", "suggested": true }, "image": { "label": "Image", "description": "Image illustrating the topic. Use full image syntax.", "type": "content", "suggested": true, "example": "[[File:example.png|200px|alt=Example alt text]]" }, "caption": { "label": "Caption", "description": "caption for the image", "type": "content", "suggested": true } }, "paramOrder": [ "title", "image", "caption" ] } </templatedata> ==Tracking categories== * {{Category link with count|Articles with missing Wikidata information}} * {{Category link with count|Articles using infobox templates with no data rows}} * {{Category link with count|Pages using embedded infobox templates with the title parameter}} ==See also== * [[Module:Infobox]], the [[WP:LUA|Lua]] module on which this template is based * [[Module:Check for unknown parameters]] * {{tl|Infobox3cols}} * {{tl|Navbox}} and {{tl|Sidebar}} * [[Wikipedia:List of infoboxes|List of infoboxes]] * [[:Module:InfoboxImage]] <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Infobox templates| ]] [[Category:Wikipedia metatemplates|Infobox]] [[Category:Templates generating microformats]] [[Category:Templates that add a tracking category]] [[Category:Templates based on the Infobox Lua module]] }}</includeonly> 4d4021dda2765ddd1cf8ba09b9fff12760e924a9 Module:Message box 828 175 343 2022-10-23T04:26:44Z beeleth>Legoktm 0 Replace [[Module:No globals]] with require( "strict" ) Scribunto text/plain require('strict') local getArgs local yesno = require('Module:Yesno') local lang = mw.language.getContentLanguage() local CONFIG_MODULE = 'Module:Message box/configuration' local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if args.demospace and args.demospace ~= '' then -- implement demospace parameter of mbox local demospace = string.lower(args.demospace) if DEMOSPACES[demospace] then -- use template from DEMOSPACES obj.cfg = cfg[DEMOSPACES[demospace]] elseif string.find( demospace, 'talk' ) then -- demo as a talk page obj.cfg = cfg.tmbox else -- default to ombox obj.cfg = cfg.ombox end elseif ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} -- For lazy loading of [[Module:Category handler]]. obj.hasCategories = false return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.hasCategories = true self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image -- Find if the box has been wrongly substituted. self.isSubstituted = cfg.substCheck and args.subst == 'SUBST' -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self.name = args.name if self.name then self:addClass('box-' .. string.gsub(self.name,' ','_')) end if yesno(args.plainlinks) ~= false then self:addClass('plainlinks') end for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText if self.isSmall then local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk) talkText = string.format('([[%s|talk]])', talkLink) else talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date) end self.info = args.info if yesno(args.removalnotice) then self.removalNotice = cfg.removalNotice end end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage or 'Imbox notice.png', imageSize) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end -- set templatestyles self.base_templatestyles = cfg.templatestyles self.templatestyles = args.templatestyles end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) end if self.isSubstituted then self:addCat('all', 'Pages with incorrectly substituted templates') end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() if not self.hasCategories then -- No categories added, no need to pass them to Category handler so, -- if it was invoked, it would return the empty string. -- So we shortcut and return the empty string. return "" end -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return require('Module:Category handler')._main{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Add the subst check error. if self.isSubstituted and self.name then root:tag('b') :addClass('error') :wikitext(string.format( 'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.', mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}') )) end local frame = mw.getCurrentFrame() root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.base_templatestyles }, }) -- Add support for a single custom templatestyles sheet. Undocumented as -- need should be limited and many templates using mbox are substed; we -- don't want to spread templatestyles sheets around to arbitrary places if self.templatestyles then root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.templatestyles }, }) end -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellDiv = textCell:tag('div') textCellDiv :addClass('mbox-text-span') :wikitext(self.issue or nil) if (self.talk or self.fix) then textCellDiv:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellDiv:wikitext(self.date and (' ' .. self.date) or nil) if self.info and not self.isSmall then textCellDiv :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end if self.removalNotice then textCellDiv:tag('span') :addClass('hide-when-compact') :tag('i') :wikitext(string.format(" (%s)", self.removalNotice)) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :addClass('mbox-invalid-type') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p, mt = {}, {} function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE)) box:setParameters() box:setCategories() return box:export() end function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) bdb0ecc9f26f26b9c0ce12a066a183ac9d4f0705 Main Page 0 1 1 2022-11-10T22:02:15Z MediaWiki default 1 Create main page wikitext text/x-wiki __NOTOC__ == Welcome to {{SITENAME}}! == This Main Page was created automatically and it seems it hasn't been replaced yet. === For the bureaucrat(s) of this wiki === Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting. You can immediately start working on your wiki or whenever you want. Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links: * [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users) * [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]] * [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.) ==== I still don't understand X! ==== Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here: * [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]] * On [[phab:|Phabricator]] * On [https://miraheze.org/discord Discord] * On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat]) === For visitors of this wiki === Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later! 21236ac3f8d65e5563b6da6b70815ca6bf1e6616 Template:Album 10 3 5 4 2022-11-10T22:14:23Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly><infobox type="Album"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <data source="artist"><label>Artist</label></data> <data source="released"><label>Released</label></data> <data source="recorded"><label>Recorded</label></data> <data source="length"><label>Length</label></data> <data source="label"><label>Label</label></data> <data source="producer"><label>Producer</label></data> </infobox></includeonly><noinclude>{{Documentation}}</noinclude> 7145bd5ecd9bcafcf1907686b6a57145c9c894ac Template:Album/doc 10 4 7 6 2022-11-10T22:14:24Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Album | title = | image = [e.g. "Example.jpg"] | imagecaption = | artist = | released = | recorded = | length = | label = | producer = }} </pre> == Sample output == {{Album | title = Fleur | image = Example.jpg | artist = Marigold | released = June 2012 | recorded = 2011 | length = 88:88 | label = Spring | producer = Daffy }} <pre> {{Album | title = Fleur | image = Example.jpg | artist = Marigold | released = June 2012 | recorded = 2011 | length = 88:88 | label = Spring | producer = Daffy }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 34c5cd77d0a20c3509b82f0386c7429a8b47a5fb Template:T 10 6 11 10 2022-11-10T22:14:26Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <onlyinclude><nowiki>{{</nowiki>{{#if:{{{prefix|}}}|{{{prefix}}}:}}[[Template:{{{1}}}|{{{1}}}]]<!-- -->{{#if:{{{2|}}}|&#124;<span style="color:#555;">''&lt;{{{2}}}&gt;''</span>}}<!-- -->{{#if:{{{3|}}}|&#124;<span style="color:#555;">''&lt;{{{3}}}&gt;''</span>}}<!-- -->{{#if:{{{4|}}}|&#124;<span style="color:#555;">''&lt;{{{4}}}&gt;''</span>}}<!-- -->{{#if:{{{5|}}}|&#124;<span style="color:#555;">''&lt;{{{5}}}&gt;''</span>}}<!-- -->{{#if:{{{6|}}}|&#124;<span style="color:#555;">''&lt;{{{6}}}&gt;''</span>}}<!-- -->{{#if:{{{7|}}}|&#124;<span style="color:#555;">''&lt;{{{7}}}&gt;''</span>}}<!-- -->{{#if:{{{8|}}}|&#124;<span style="color:#555;">''&lt;{{{8}}}&gt;''</span>}}<!-- -->{{#if:{{{9|}}}|&#124;<span style="color:#555;">''&lt;{{{9}}}&gt;''</span>}}<!-- -->{{#if:{{{10|}}}|&#124;<span style="color:#555;">''&lt;{{{10}}}&gt;''</span>}}<!-- -->{{#if:{{{11|}}}|&#124;<span style="color:#555;">''&lt;{{{11}}}&gt;''</span>}}<!-- -->{{#if:{{{12|}}}|&#124;<span style="color:#555;">''&lt;{{{12}}}&gt;''</span>}}<!-- -->{{#if:{{{13|}}}|&#124;<span style="color:#555;">''&lt;{{{13}}}&gt;''</span>}}<!-- -->{{#if:{{{14|}}}|&#124;<span style="color:#555;">''&lt;{{{14}}}&gt;''</span>}}<!-- -->{{#if:{{{15|}}}|&#124;<span style="color:#555;">''&lt;{{{15}}}&gt;''</span>}}<!-- -->{{#if:{{{16|}}}|&#124;<span style="color:#555;">''&lt;{{{16}}}&gt;''</span>}}<!-- -->{{#if:{{{17|}}}|&#124;<span style="color:#555;">''&lt;{{{17}}}&gt;''</span>}}<!-- -->{{#if:{{{18|}}}|&#124;<span style="color:#555;">''&lt;{{{18}}}&gt;''</span>}}<!-- -->{{#if:{{{19|}}}|&#124;<span style="color:#555;">''&lt;{{{19}}}&gt;''</span>}}<!-- -->{{#if:{{{20|}}}|&#124;<span style="color:#555;">''&lt;{{{20}}}&gt;''</span>}}<!-- -->{{#if:{{{21|}}}|&#124;<span style="color:#555;">''&lt;{{{21}}}&gt;''</span>}}<!-- --><nowiki>}}</nowiki></onlyinclude><noinclude>{{documentation}}</noinclude> 4273916fece7a96eef48125efb615009a1fd6fe6 Template:Documentation/doc 10 7 13 12 2022-11-10T22:14:26Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ==Description== This template is used to insert descriptions on template pages. ==Syntax== Add <code><nowiki><noinclude></nowiki>{{t|Documentation}}<nowiki></noinclude></nowiki></code> at the end of the template page. Add <code><nowiki><noinclude></nowiki>{{t|Documentation|documentation page}}<nowiki></noinclude></nowiki></code> to transclude an alternative page from the /doc subpage. ==Usage== ===On the Template page=== This is the normal format when used: <pre> TEMPLATE CODE <includeonly>Any categories to be inserted into articles by the template</includeonly> <noinclude>{{Documentation}}</noinclude> </pre> ''If your template is not a completed div or table, you may need to close the tags just before <code><nowiki>{{Documentation}}</nowiki></code> is inserted (within the noinclude tags).'' ''A line break right before <code><nowiki>{{Documentation}}</nowiki></code> can also be useful as it helps prevent the documentation template "running into" previous code.'' ===On the documentation page=== The documentation page is usually located on the /doc subpage for a template, but a different page can be specified with the first parameter of the template (see [[#Syntax|Syntax]]). Normally, you will want to write something like the following on the documentation page: <pre> ==Description== This template is used to do something. ==Syntax== Type <code>{{t|templatename}}</code> somewhere. ==Samples== <code>&lt;nowiki>{{templatename|input}}&lt;/nowiki></code> results in... {{templatename|input}} <includeonly>Any categories for the template itself</includeonly> <noinclude>[[Category:Template documentation]]</noinclude> </pre> Use any or all of the above description/syntax/sample output sections. You may also want to add "see also" or other sections. Note that the above example also uses the [[Template:T]] template. <includeonly>[[Category:Documentation templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 58ca364cb71b551e4a71ddf3046cf41c84db0d57 Template:T/doc 10 8 15 14 2022-11-10T22:14:27Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description A template link with a variable number of parameters (0-20). ;Syntax :{{t|t|parameter1|parameter2|parameter3|parameter4|...|parameter20}} <!-- self-referential examples! --> ;Source :Improved version not needing t/piece subtemplate developed on [http://templates.fandom.com Templates wiki] see the [http://templates.fandom.com/index.php?title=Template:T&action=history list of authors]. Copied here via CC-By-SA 3.0 license. ;Example :{{t|t|param1|param2}} <includeonly>[[Category:General wiki templates]]</includeonly> <noinclude>[[Category:Template documentation]]</noinclude> 6f7307b6bcfef75efcc1d71fc932366c04cd61b3 Template:Character 10 9 17 16 2022-11-10T22:14:28Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly><infobox type="Character"> <title source="name"/> <image source="image"> <caption source="imagecaption" /> </image> <group> <data source="aliases"><label>Aliases</label></data> <data source="relatives"><label>Relatives</label></data> <data source="affiliation"><label>Affiliation</label></data> <data source="occupation"><label>Occupation</label></data> </group> <group> <header>Biographical information</header> <data source="marital"><label>Marital status</label></data> <data source="birthDate"><label>Date of birth</label></data> <data source="birthPlace"><label>Place of birth</label></data> <data source="deathDate"><label>Date of death</label></data> <data source="deathPlace"><label>Place of death</label></data> </group> <group> <header>Physical description</header> <data source="species"><label>Species</label></data> <data source="gender"><label>Gender</label></data> <data source="height"><label>Height</label></data> <data source="weight"><label>Weight</label></data> <data source="eyes"><label>Eye color</label></data> </group> <group> <header>Appearances</header> <data source="portrayedby"><label>Portrayed by</label></data> <data source="appearsin"><label>Appears in</label></data> <data source="debut"><label>Debut</label></data> </group> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Characters]]}}</includeonly><noinclude>{{Documentation}}</noinclude> f63ba56dbc9f4a25683ff5d7104509d0e8bb9eda Template:Character/doc 10 10 19 18 2022-11-10T22:14:28Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Character | name = | image = | imagecaption = | aliases = | relatives = | affiliation = | occupation = | marital = | birthDate = | birthPlace = | deathDate = | deathPlace = | species = | gender = | height = | weight = | eyes = | portrayedby = | appearsin = | debut = }} </pre> == Sample output == {{Character | name = Flowa | image = Example.jpg | imagecaption = Flowa, at rest | aliases = Flo | relatives = | affiliation = | occupation = | marital = | birthDate = July 21st, 2013 | birthPlace = Iowa | deathDate = | deathPlace = | species = Plant | gender = | height = | weight = | eyes = | portrayedby = | appearsin = | debut = }} <pre> {{Character | name = Flowa | image = Example.jpg | imagecaption = Flowa, at rest | aliases = Flo | relatives = | affiliation = | occupation = | marital = | birthDate = July 21st, 2013 | birthPlace = Iowa | deathDate = | deathPlace = | species = Plant | gender = | height = | weight = | eyes = | portrayedby = | appearsin = | debut = }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 6ddf3451fd7140d6b498a17d53162a4ccd65e691 Template:Book 10 11 21 20 2022-11-10T22:14:29Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly><infobox type="Book"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <data source="author"><label>Author</label></data> <data source="illustrator"><label>Illustrator</label></data> <data source="datePublished"><label>Published on</label></data> <data source="publisher"><label>Publisher</label></data> <group layout="horizontal"> <header>Publication order</header> <data source="previous"><label>Previous</label></data> <data source="next"><label>Next</label></data> </group> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Books]]}}</includeonly><noinclude>{{Documentation}}</noinclude> c4bc425c60ee6f1a263f67a75f6d26aafc236c03 Template:Book/doc 10 12 23 22 2022-11-10T22:14:30Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre>{{Book | title = | image = [e.g. "Example.jpg"] | author = | illustrator = | datePublished = | publisher = | previous = | next = }}</pre> == Sample output == {{Book | title = The Adventures of Flower | image = Example.jpg | author = Alice | illustrator = Bob | datePublished = April 1928 | publisher = Arthur's | previous = Book One | next = Book Three }} <pre>{{Book | title = The Adventures of Flower | image = Example.jpg | author = Alice | illustrator = Bob | datePublished = April 1928 | publisher = Arthur's | previous = Book One | next = Book Three }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 7320d1953158c6673ed6ce2be7bc35e2356522e5 Template:Episode 10 13 25 24 2022-11-10T22:14:31Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly><infobox type="Episode"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <data source="partOfSeason"><label>Season</label></data> <data source="episodeNumber"><label>Episode</label></data> <data source="airDate"><label>Air date</label></data> <data source="writer"><label>Writer</label></data> <data source="director"><label>Director</label></data> <group layout="horizontal"> <header>Episode guide</header> <data source="previousEpisode"><label>Previous</label></data> <data source="nextEpisode"><label>Next</label></data> </group> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Episodes]]}}</includeonly><noinclude>{{Documentation}}</noinclude> 222b04973118bf9a11e3e5f3a034c07b6ec30fee Template:Episode/doc 10 14 27 26 2022-11-10T22:14:31Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre>{{Episode | title = | partOfSeason = | episodeNumber = | image = [e.g. "Example.jpg"] | airDate = | writer = | director = | previousEpisode = | nextEpisode = }}</pre> == Sample output == {{Episode | title = Flower of Babel | partOfSeason = One | episodeNumber = Three | image = Example.jpg | airDate = Unaired | writer = D. Righta | director = A. di Rektour | previousEpisode = Episode Two | nextEpisode = Episode Four }}<pre>{{Episode | title = Flower of Babel | partOfSeason = One | episodeNumber = Three | image = Example.jpg | airDate = Unaired | writer = D. Righta | director = A. di Rektour | previousEpisode = Episode Two | nextEpisode = Episode Four }}</pre> <includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 422683315393b9908127727460675544f6ffb8cf Template:Event 10 15 29 28 2022-11-10T22:14:32Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly><infobox type="Event"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <data source="performers"><label>Performers</label></data> <data source="date"><label>Date</label></data> <data source="location"><label>Location</label></data> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Events]]}}</includeonly><noinclude>{{Documentation}}</noinclude> d66b112135e43b8474d30a6dab0feaab6588dfe8 Template:Event/doc 10 16 31 30 2022-11-10T22:14:33Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Event | title = | image = [e.g. "Example.jpg"] | imagecaption = | performers = | date = | location = }} </pre> == Sample output == {{Event | title = Flower du Jour | image = Example.jpg | performers = Awesome Ones | date = All the time | location = Everywhere }} <pre> {{Event | title = Flower du Jour | image = Example.jpg | performers = Awesome Ones | date = All the time | location = Everywhere }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 1502585ceb0f0a7e1e70edc0fa8c88720e7da905 Template:Item 10 17 33 32 2022-11-10T22:14:33Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly><infobox type="Item"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <data source="type"><label>Type</label></data> <data source="effects"><label>Effects</label></data> <data source="source"><label>Source</label></data> <data source="buy"><label>Cost to buy</label></data> <data source="sell"><label>Cost to sell</label></data> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Items]]}}</includeonly><noinclude>{{Documentation}}</noinclude> 1c76f47b4d1d6c296c09c245c7dd7d4efc9ff9e6 Template:Item/doc 10 18 35 34 2022-11-10T22:14:34Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Item | title = | image = [e.g. "Example.jpg"] | imagecaption = | type = | effects = | source = | buy = | sell = }} </pre> == Sample output == {{Item | title = Power Flower | image = Example.jpg | type = Food | effects = +1 Fire | source = Vendor | buy = 5g | sell = 1g }}<pre> {{Item | title = Power Flower | image = Example.jpg | type = Food | effects = +1 Fire | source = Vendor | buy = 5g | sell = 1g }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> ecd61f0a9df462e9790349a7ef0034b375ef0e2b Template:Location 10 19 37 36 2022-11-10T22:14:35Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly><infobox type="Location"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <image source="map"><caption source="mapcaption"/></image> <data source="type"><label>Type</label></data> <data source="level"><label>Level</label></data> <data source="location"><label>Location</label></data> <data source="inhabitants"><label>Inhabitants</label></data> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Locations]]}}</includeonly><noinclude>{{Documentation}}</noinclude> 74c089bf3093e560bd6a2144977d9d0bc5faebc0 Template:Location/doc 10 20 39 38 2022-11-10T22:14:35Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Location | title = | image = [e.g. "Example.jpg"] | imagecaption = | map = [e.g. "Example.jpg"] | mapcaption = | type = | level = | location = | inhabitants = }} </pre> == Sample output == {{Location | title = Flora Island | image = Example.jpg | imagecaption = The island | map = Example.jpg | mapcaption = Zone map | type = Contested | level = 1-5 | location = Earth | inhabitants = Stompy Humans, Drinky Bees }}<pre> {{Location | title = Flora Island | image = Example.jpg | imagecaption = The island | map = Example.jpg | mapcaption = Zone map | type = Contested | level = 1-5 | location = Earth | inhabitants = Stompy Humans, Drinky Bees }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> e3e627290fa1c04d98083b44bcd2fa5cb562e13c Template:Navbox 10 21 41 40 2022-11-10T22:14:36Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {| style="width:100%; margin-top:1em; border:1px solid #999; font-size:90%; text-align:center;" |- ! style="padding:0.2em 0.5em;" nowrap="nowrap" class="color1" | {{{header}}} |- | style="padding:0.2em 0.5em;" | {{{body}}} |}<noinclude> {{documentation}}</noinclude> 21aa3440d9c06c537ca5808c298e155d57e8dc90 Template:Navbox/doc 10 22 43 42 2022-11-10T22:14:37Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description :This template is used to create a basic navigation box. You can do so by calling the template, via the steps under "Syntax", but it is recommended to '''copy the code verbatim''' via the steps under "Navbox Creation". ;Navbox Creation <inputbox> type=create prefix=Template: preload=Template:Navbox editintro=Template:Navbox/doc buttonlabel=Make your navbox! default = Navbox Foo </inputbox> #Think of a name for your navbox, like "Navbox Foo". Type it in the above field, press the button, and save the page immediately. Be ready to return to ''this'' page to see the rest of the instructions. #Edit the resulting page in source mode. #Replace <code>{{{header}}}</code> with the text you would like to appear in the header. #Replace <code>{{{body}}}</code> with the text you would like to appear in the body. #To add another section, copy these four lines of code immediately below the lines in the existing code that they resemble: <pre>|- ! style="padding:0.2em 0.5em;" nowrap="nowrap" class="color1" | {{{header}}} |- | style="padding:0.2em 0.5em;" | {{{body}}}</pre> Save the page once you have added as many sections as you needed, and filled them with content. You may also want to create a /doc subpage explaining that to call the resulting template, one must only type <code>{<nowiki/>{Navbox Foo}}</code>, or rather, whatever we decided to name the template in step 1. ;Syntax <pre>{{navbox |header=Land of Bob |body=This <nowiki>[[place]]</nowiki> and that <nowiki>[[place]]</nowiki>. }}</pre> :Results in... {{navbox |header=Land of Bob |body=This <nowiki>[[place]]</nowiki> and that <nowiki>[[place]]</nowiki>. }} <includeonly>[[Category:Navbox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 4b1a1bf5f00c2d159d30d8f8bc525309ac16d406 Template:Quest 10 23 45 44 2022-11-10T22:14:37Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly><infobox type="Quest"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <data source="start"><label>Start</label></data> <data source="end"><label>End</label></data> <data source="prerequisites"><label>Prerequisites</label></data> <data source="level"><label>Level</label></data> <data source="location"><label>Location</label></data> <data source="rewards"><label>Rewards</label></data> <group layout="horizontal"> <header>Quest progression</header> <data source="previous"><label>Previous</label></data> <data source="next"><label>Next</label></data> </group> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Quests]]}}</includeonly><noinclude>{{Documentation}}</noinclude> 1057bf1c3220419334e60f6b01c07995f871d8f8 Template:Quest/doc 10 24 47 46 2022-11-10T22:14:38Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Quest | title = | image = [e.g. "Example.jpg"] | imagecaption = | start = | end = | prerequisites = | level = | location = | rewards = | previous = | next = }} </pre> == Sample output == {{Quest | title = Example infobox | image = Example.jpg | start = Chrys | end = Geran | prerequisites = None | level = 5 | location = Earth | rewards = Justice-Wrought Petals | previous = A | next = C }} <pre>{{Quest | title = Example infobox | image = Example.jpg | start = Chrys | end = Geran | prerequisites = None | level = 5 | location = Earth | rewards = Justice-Wrought Petals | previous = A | next = C }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 3c80ee4fc3fe45023bd67b3c400b2e64f4f2892a File:Wiki.png 6 25 49 48 2022-11-10T22:14:40Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki [[Category:Wiki skin images]] f0235f85e2414431e046ae251792bf050daef5f7 Template:Permission 10 26 51 50 2022-11-10T22:14:41Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{LicenseBox|text=''This file is copyrighted. The copyright holder has given permission for its use.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Files used with permission]]</includeonly>}}<noinclude> {{documentation}}</noinclude> 5940d21c4cf55ab1e46623c8d7202220620ea3fc Template:Fairuse 10 27 53 52 2022-11-10T22:14:41Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{LicenseBox|text=''This file is copyrighted. It will be used in a way that qualifies as fair use under US copyright law.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Fairuse files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> 5db6645c70193dbeb65eed77de07f36451e1145c Template:Self 10 28 55 54 2022-11-10T22:14:42Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{LicenseBox|text=''This file was uploaded by the photographer or author.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Files uploaded by the photographer or author]]</includeonly>}}<noinclude> {{documentation}}</noinclude> c3570ab7a69cc0cdf1478e8b7d45f8c70f1214c0 Template:From Wikimedia 10 29 57 56 2022-11-10T22:14:42Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{LicenseBox|text=''This file was originally uploaded on Wikipedia or another Wikimedia project.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Files from WikiMedia projects]]</includeonly>}}<noinclude> {{documentation}}</noinclude> 72fed0e402d6912cd6381ef1b21b52929b041d8c Template:CC-BY-SA 10 30 59 58 2022-11-10T22:14:44Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{LicenseBox|text=''This file is licensed under the [http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-Share Alike License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:CC-BY-SA files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> b7cc0c0ae4d0cbff86fb66f332cdbfd9ef0c67f1 Template:Other free 10 31 61 60 2022-11-10T22:14:44Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{LicenseBox|text=''This file is licensed under a free license.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Freely licensed files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> a0e93bfb8a804eb54e67553ff50ba57b368ba00d Template:PD 10 32 63 62 2022-11-10T22:14:45Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{LicenseBox|text=''This file is in the public domain''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Public domain files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> daf709f747ba95ea06112acade4c78177a475e30 Template:Permission/doc 10 33 65 64 2022-11-10T22:14:45Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description :This template is used to mark images as being copyrighted, but the copyright holder has given permission for its use. ;Syntax :Type <code>{{t|permission}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> e2fc5fa15609d14fe9de91b503904f2b3f363afa Template:Fairuse/doc 10 34 67 66 2022-11-10T22:14:46Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description :This template is used to mark images as fair use. ;Syntax :Type <code>{{t|fairuse}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> a0b1f9487b6ecaaa0f6ea70533a69c17d42e01ff Template:Self/doc 10 35 69 68 2022-11-10T22:14:46Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description :This template is used to mark images as having been uploaded by the photographer or author. ;Syntax :Type <code>{{t|self}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 8daf839df62f0465275f6ef57c3998c9af9e4e1d Template:From Wikimedia/doc 10 36 71 70 2022-11-10T22:14:47Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description :This template is used to mark images as having been uploaded on [[wikipedia:|Wikipedia]] or another [[wikimedia:|Wikimedia]] project. ;Syntax :Type <code>{{t|From Wikimedia}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 077fe0f228cb18bf949fee95011ec7b36fe64033 Template:CC-BY-SA/doc 10 37 73 72 2022-11-10T22:14:48Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description :This template is used to mark images with the CC-BY-SA license. ;Syntax :Type <code>{{t|CC-BY-SA}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 4fa145ced3f3a218b897f635df8d678eeff73464 Template:Other free/doc 10 38 75 74 2022-11-10T22:14:48Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description :This template is used to mark images with a free license not covered by other image templates. ;Syntax :Type <code>{{t|Other free}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> f4a03ee383d67da50c93408169b82b8217ff1404 Template:PD/doc 10 39 77 76 2022-11-10T22:14:49Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description :This template is used to mark images as being in the public domain. ;Syntax :Type <code>{{t|PD}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> bf14002371e6786761dfb4a58f4fdaf44062b8cc Template:Topic 10 40 79 78 2022-11-10T22:14:49Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly>{{#sub:{{#replace:{{SITENAME}}| Wiki}}|-{{#len:{{#replace:{{SITENAME}}| Wiki}}}}-1}}</includeonly><noinclude>{{documentation}}</noinclude> e8c5bb53e6d20ba0b81fcfa08813051675219442 Template:Topic/doc 10 41 81 80 2022-11-10T22:14:50Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki == Description == This template uses your wiki's <code>SITENAME</code> and strips off the word "wiki" leaving what is in most cases the text describing the topic of your wiki. To use this template in its basic form, simply add the {{T|{{BASEPAGENAME}}}} template wherever you want your topic to appear in a sentence or section. If your wiki's <code>SITENAME</code> minus the word "wiki" is not a good descriptor for your wiki's topic, you may also simply edit the template and replace it with just the text you want displayed. == Syntax == <pre>{{Topic}}</pre> == Sample output == {{Topic}} <includeonly>[[Category:Templates]]</includeonly><noinclude>[[Category:Template documentation|{{PAGENAME}}]]</noinclude> 54e98cb6fa2fa6aec9e9fa9b138b0cd6d5bf321b Category:Infobox templates 14 42 83 82 2022-11-10T22:14:51Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Templates 14 43 85 84 2022-11-10T22:14:51Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki [[Category:Maintenance]] a106a39e26c77e7b2ec90cb83728a6446cb6a1a1 Category:Maintenance 14 44 87 86 2022-11-10T22:14:52Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki The subcategories of this category contain pages that have been identified as needing attention for one or more of the following reasons: * Changes have been suggested that should be discussed first or are under discussion. * The page has flaws that need addressing by an editor with the knowledge or skills to help. * The action the page needs requires special rights. ''See also:'' {{cols|2| * [[Special:BrokenRedirects|Broken redirects]] * [[Special:DoubleRedirects|Double redirects]] * [[Special:UncategorizedCategories|Uncategorized categories]] * [[Special:UncategorizedFiles|Uncategorized files]] * [[Special:UncategorizedPages|Uncategorized pages]] * [[Special:UncategorizedTemplates|Uncategorized templates]] * [[Special:WantedCategories|Wanted categories]] * [[Special:WantedFiles|Wanted files]] * [[Special:WantedPages|Wanted pages]] * [[Special:WantedTemplates|Wanted templates]] * [[Special:TrackingCategories|Other special tracking categories]] }} [[Category:{{SITENAME}}]] 3646bf22bbf81213a9b8ea11df02ceee8866b235 Category:Image license templates 14 45 89 88 2022-11-10T22:14:52Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Navbox templates 14 46 91 90 2022-11-10T22:14:53Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:General wiki templates 14 47 93 92 2022-11-10T22:14:53Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Documentation templates 14 48 95 94 2022-11-10T22:14:53Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Template documentation 14 49 97 96 2022-11-10T22:14:53Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki The templates in this category contain documentation about other templates. The are automatically put here by the {{T|Documentation}} template. [[Category:Templates]] e1cf9416700d7877b308b2f9051b33cd028dd11d Template:Main 10 50 99 98 2022-11-10T22:14:54Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|main}}</includeonly> <noinclude>{{Documentation|:Template:Hatnote/doc}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Main_article --></noinclude> de20b6a379396a3458f12d72e486fce07869137c Template:See also 10 51 101 100 2022-11-10T22:14:54Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|seeAlso}}</includeonly> <noinclude>{{Documentation|:Template:Hatnote/doc}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Hatnote --></noinclude> e245d8ecb350a8965723151f4fad9d3cafedad60 Template:About 10 52 103 102 2022-11-10T22:14:54Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|about}}</includeonly> <noinclude>{{Documentation|:Template:Hatnote/doc}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:About --></noinclude> 510109cae7f705952c7a0279d73a7a44fa82d41f Template:For 10 53 105 104 2022-11-10T22:14:55Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|For}}</includeonly> <noinclude>{{Documentation|:Template:Hatnote/doc}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Hatnote --></noinclude> 6caebf265784c02a3dba04fe77eb5c5afb52fbd4 Template:Further 10 54 107 106 2022-11-10T22:14:55Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|further}}</includeonly> <noinclude>{{Documentation|:Template:Hatnote/doc}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Hatnote --></noinclude> 2b274c2a078defdd0995162869db05d3fc772067 Template:Hatnote 10 55 109 108 2022-11-10T22:14:55Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|hatnote}}</includeonly><noinclude>{{Documentation}}</noinclude> 47651229f8ca41785babe25d56cdae7ac03ad9e1 Template:Delete 10 56 111 110 2022-11-10T22:14:56Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{MessageBox |header = Candidate for deletion |type = delete |text = This page has been nominated for removal from the wiki. |comment = Remember to check [[Special:Whatlinkshere/{{FULLPAGENAME}}|what links here]] and [{{fullurl:{{FULLPAGENAME}}|action=history}} the page history] before deletion. |class = notice hidden plainlinks |id = delete }}<includeonly>[[Category:Candidates for deletion]]</includeonly><noinclude> {{Documentation}}</noinclude> 4173b2533a1aa36de4f2777956f1eae8889808ba Template:Quote 10 57 113 112 2022-11-10T22:14:57Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{#invoke:Quote|quote}}<noinclude>{{Documentation}}<!-- For a more traditional wikitext version of this template, see https://starter.fandom.com/wiki/Template:Quote?oldid=4277 --></noinclude> bf6ed2ef0e8d676125dfd9d9b8b8ad72a18049e3 Template:Disambiguation 10 58 115 114 2022-11-10T22:14:57Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{MessageBox | header = Disambiguation page for {{PAGENAME}} | type = disambiguation | text = The following is a list of links to pages that might share the same title. | comment = Please follow one of the disambiguation links below or [[Special:Search|search]] to find the page you were looking for if it is not listed. If an [[Special:Whatlinkshere/{{FULLPAGENAME}}|internal link]] led you here, you may wish to change the link to point directly to the intended article. | class = notice hidden | id = disambiguation}} <includeonly>__DISAMBIG__[[Category:Disambiguations]]</includeonly><noinclude> {{documentation}}</noinclude> 16605ae9114395add2e702cee409d0bd2deb7603 Template:MessageBox 10 59 117 116 2022-11-10T22:14:58Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{#invoke:Mbox|main}}<noinclude>{{Documentation}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Ambox --></noinclude> fab8a2df56fd74147e1709af14e8993cfab7ebe7 Template:Dialogue 10 60 119 118 2022-11-10T22:14:58Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly><blockquote data-format="dialogue">{{#invoke:Dialogue|main}}</blockquote></includeonly><noinclude>{{Documentation}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Dialogue --></noinclude> 400ad4d61c7eff1f67db8a2116441090d803cb3d Template:Namespace 10 61 121 120 2022-11-10T22:14:59Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Namespace detect|main}}<noinclude>{{Documentation}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Namespace_detect --></noinclude> f5b6ed2c0363fd704c716a6e5420a5cc0546392f Template:Hatnote/doc 10 62 123 122 2022-11-10T22:15:00Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki The hatnotes used for adding links between articles where more context is important. Broadly speaking, a hatnote should answer a readers' question: Am I on the right page? == Usage == ; Basic usage: &#123;{hatnote|''text''}} ; All parameters: &#123;{hatnote|''text''|extraclasses=''extra classes''|selfref=''yes''|category=''no''}} == Parameters == This template accepts the following parameters: * <code>1</code> - the hatnote text (required) * <code>extraclasses</code> - any extra CSS classes to be added. * <code>selfref</code> - If set to "yes", "y", "true" or "1", adds the CSS class "selfref". This is used to denote self-references. * <code>category</code> - If set to "no", "n", "false", or "0", suppresses the error tracking category ([[:Category:Hatnote templates with errors]]). This has an effect only if the leftmost parameter (the hatnote text) is omitted. == Example == * <code><nowiki>{{hatnote|Example hatnote text}}</nowiki></code> → {{hatnote|Example hatnote text}} == Typical types == {{T|Main}}, {{T|Further}} are very similar, but indicate either the primary page for a topic or more detailed related topic. They have a nearly identical set of parameters. ;{{T|Main}}: When an article is large, it often has a summary and a link to a main article. This template is used after the heading of the summary, to indicate a link to the subtopic article that has been summarized. ;{{T|Further}}: Used to link to articles containing further information on this topic. ;{{T|See also}}: Used to link to additional articles on related topics. :;{{T|Main|Main Page}} →:{{Main|Main Page}} :;{{T|Main|Main Page|Main Page}} →:{{Main|Main Page|Main Page}} :*<code>1</code>, <code>2</code>, <code>3</code>, ... – the pages to link to. If no page names are specified, the current page name is used instead (without the namespace prefix). Categories and files are automatically escaped with the [[w:Help:Colon trick|colon trick]], and links to sections are automatically formatted as ''page § section'', rather than the MediaWiki default of ''page#section''. :*<code>l1</code>, <code>l2</code>, <code>l3</code>, ... ''or''<code>label 1</code>, <code>label 2</code>, <code>label 3</code>, ... – optional labels for each of the pages to link to (this is for articles where a piped link would be used). Note that the extra parameters use a lower case 'L', for example, <code>l1</code>, <u>not</u> <code>L1</code>. :*<code>selfref</code> – if set to "yes", "y", "true" or "1", adds the CSS class "selfref". This is used to denote self-references. == Disambiguation == Templates such as {{T|About}} and {{T|For}} are to be used in cases where a disambiguation is not needed. In general, disambiguation pages should only be used for 4 or more titles that are mostly or entirely identical, except for a qualifier. ;{{T|About}}: Links the reader to other articles with similar titles or concepts that they may have been seeking instead. The template has several formats, including: :;{{T|About|Use1}} →:{{About|}} :;{{T|About|Use1|<nowiki/>|Main Page}} →:{{About|Use1||Main Page}} :;{{T|About|Use1|<nowiki/>|Main Page|and|Main Page}} →:{{About|Use1||Main Page|and|Main Page}} :;{{T|About|Use1|Use2|Main Page}} →:{{About|Use1|Use2|Main Page}} :;{{T|About|Use1|Use2|Main Page|and|Main Page}} →:{{About|Use1|Use2|Main Page|and|Main Page}} :;{{T|About|Use1|Use2|Main Page|other uses}} →:{{About|Use1|Use2|Main Page|other uses}} Alternately, a <code>section=yes</code> parameter can be added to the {{T|About}} template for use at the top of a section. When using this parameter, the wording in the template changes to specify that it is being used in a section: :;{{T|About|Use1|<nowiki>section=yes</nowiki>}} →:{{About|Use1|section=yes}} :;{{T|About|Use1|<nowiki/>|Main Page|<nowiki>section=yes</nowiki>}} →:{{About|Use1||Main Page|section=yes}} :;{{T|About|Use1|Use2|Main Page|<nowiki>section=yes</nowiki>}} →:{{About|Use1|Use2|Main Page|section=yes}} :;{{T|About|Use1|Use2|Main Page|and|Main Page|<nowiki>section=yes</nowiki>}} →:{{About|Use1|Use2|Main Page|and|Main Page|section=yes}} :;{{T|About|Use1|Use2|Main Page|other uses|<nowiki>section=yes</nowiki>}} →:{{About|Use1|Use2|Main Page|other uses|section=yes}} A <var>text</var> option adds text to the end; note that this should be only used when truly necessary, and the other hatnote templates listed below don't suffice. This template also supports <var>selfref</var>. ;{{T|For}}: Provides links to up to four articles or disambiguation pages. It accepts zero to five parameters. :;If used without parameters on a page named ''Foo'', the result is ::{{hatnote|For other uses, see [[:Foo (disambiguation)]].}} :;The first parameter changes the hatnote itself and should be plain text, e.g. {{T|For|similar terms}} yields ::{{hatnote|For similar terms, see [[:Foo (disambiguation)]].}} :;The second parameter is used to change the resultant link, e.g. {{T|For|similar terms|Main Page}} yields ::{{For|similar terms|Main Page}} :;The third, fourth and fifth parameters are used to give one, two, or three supplementary links: :*{{For|similar terms|Main Page|Main Page}} :*{{For|similar terms|Main Page|Main Page|Main Page}} :*{{For|similar terms|Main Page|Main Page|Main Page|Main Page}} :the last being produced by e.g. {{T|For|similar terms|Main Page|Main Page|Main Page|Main Page}}. == Errors == If no hatnote text is supplied, the template will output the following message: * {{hatnote|category=no}} If you see this error message, it is for one of four reasons: # No parameters were specified (the template code was <code><nowiki>{{hatnote}}</nowiki></code>). Please use <code><nowiki>{{hatnote|</nowiki>''text''<nowiki>}}</nowiki></code> instead. # Some parameters were specified, but the hatnote text wasn't included. For example, the template text <code><nowiki>{{hatnote|extraclasses=seealso}}</nowiki></code> will produce this error. Please use (for example) <code><nowiki>{{hatnote|</nowiki>''text''<nowiki>|extraclasses=seealso}}</nowiki></code> instead. # The hatnote text was specified, but that text contains an equals sign ("="). The equals sign has a special meaning in template code, and because of this it cannot be used in template parameters that do not specify a parameter name. For example, the template code <code><nowiki>{{hatnote|2+2=4}}</nowiki></code> will produce this error. To work around this, you can specify the parameter name explicitly by using <code>1=</code> before the hatnote text, like this: <code><nowiki>{{hatnote|1=2+2=4}}</nowiki></code>. # You tried to access [[Module:Hatnote]] directly by using <code><nowiki>{{#invoke:hatnote|hatnote|</nowiki>''text''<nowiki>}}</nowiki></code>. Use of #invoke in this way has been disabled for performance reasons. Please use <code><nowiki>{{hatnote|</nowiki>''text''<nowiki>}}</nowiki></code> instead. Pages that contain this error message are tracked in [[:Category:Hatnote templates with errors]]. == Technical details == This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Hatnote|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Hatnote|Hatnote on Templates Wiki]]'''. The HTML code produced by this template looks like this: * <code><nowiki><div role="note" class="hatnote"></nowiki>''hatnote text''<nowiki></div></nowiki></code> <includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> f89b62bda227691a45fd6d42d8bf89b151436cd2 Template:Delete/doc 10 63 125 124 2022-11-10T22:15:00Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description :This template is used to mark pages for deletion, categorizing them in [[:Category:Candidates for deletion]]. ;Syntax :Type <code>{{t|delete}}</code> on the page to be deleted.''' <includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> baa263e149fb470c182f0de3af57178739e61a86 Template:Quote/doc 10 64 127 126 2022-11-10T22:15:00Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ==Description== To use this template, enter the following and fill in the appropriate fields. Most fields left blank will not show up. ==Syntax== <pre> {{Quote | quote = | speaker = | source = }} </pre> As an alternative, these can be placed in positional order. ==Samples== {{Quote | quote = When you play the game of thrones, you win or you die. | speaker = [[w:c:gameofthrones:Cersei Lannister|Cersei Lannister]] | source = [[w:c:gameofthrones:You Win or You Die|"You Win or You Die"]] }} <pre> {{Quote | quote = When you play the game of thrones, you win or you die. | speaker = [[w:c:gameofthrones:Cersei Lannister|Cersei Lannister]] | source = [[w:c:gameofthrones:You Win or You Die|"You Win or You Die"]] }} </pre> or <pre> {{Quote | When you play the game of thrones, you win or you die. | [[w:c:gameofthrones:Cersei Lannister|Cersei Lannister]] | [[w:c:gameofthrones:You Win or You Die|"You Win or You Die"]] }} </pre> == Technical details == This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Quote|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Quote|Quote on Templates Wiki]]'''. <includeonly>[[Category:Quote templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 9257007bdd810476e8723e435841c3f133a204f2 Template:Disambiguation/doc 10 65 129 128 2022-11-10T22:15:01Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description :Marks an article as a disambiguation page, adding a banner to the article and categorizing it under [[:Category:Disambiguations]]. ;Syntax :Add <code>{{t|disambiguation}}</code> at the top of a disambiguation page. <includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> c0a52d0ac40d9827b4462625985906e37c6f83c9 Template:MessageBox/doc 10 66 131 130 2022-11-10T22:15:01Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{T|MessageBox}} is a template for creating message boxes. It is highly customizable with classes, inline styles, and provided CSS selectors. Optional features such as an image, left border, right-side text (for e.g. shortcuts), and a dismiss function. It uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Mbox|on the Global Lua Module page]]. This version is modified to produce a starter style, based on the [[w:c:dev:mediawiki:Global Lua Modules/Mbox.css|basic style from the module]]. To use the full capabilities of this module and remove the default styling, remove the indicated portions of [[Module:Mbox]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Ambox|Ambox on Templates Wiki]]'''. ==Parameters== For examples of how to use these parameters, see [[#Examples]]. {| class="wikitable" style="width: 100%" ! Parameter name ! Description ! Required? ! Default |- | <code>class</code> | Additional classes to the root <code>.mbox</code> element. | No | — |- | <code>bordercolor</code> | The color of the thick left-most border. | No | Stylesheet default |- | <code>type</code> | Type of mbox as declared as in CSS with variables. Affects color of the thick left-most border. See [[#Using types]]. | No | — |- | <code>bgcolor</code> | The color of the mbox's background. | No | Stylesheet default |- | <code>style</code> | Additional inline styles to the root <code>.mbox</code> element. | No | — |- | <code>image</code> | An image to be added to the left of all text content. | No | — |- | <code>imagewidth</code> | The width of the image (height automatically adjusts). | No | <code>60px</code> |- | <code>imagelink</code> | The link to which the image points (could link to the relevant maintenance category, per example). If not included, the image will be un-clickable. | No | — |- | <code>header</code> | The header (bold text placed at the top). This is typically used to very briefly explain the subject of the mbox itself, as when the mbox is closed, only the header will show. | No | — |- | <code>text</code> | Non-bold text placed below the header, typically used to explain the subject of the mbox in further or additional detail. When the mbox is closed, this text will be hidden. | No | — |- | <code>comment</code> | Smaller non-bold text placed below the main text, typically used to add additional links or context about the notice. When the mbox is closed, this text will be hidden. | No | — |- | <code>aside</code> | Text placed within a small allocation on the right side separated by a light gray border. Most commonly used to show shortcuts to the page in question (such as on policy pages). When the mbox is closed, this text will be hidden. | No | — |- | <code>id</code> | By default, one close button will close all mboxes on the page. However, to change this, this parameter may be used, given as the name of the mbox implementation (e.g., "Template:Cleanup" would have <code><nowiki>|id=cleanup</nowiki></code>). | No | — |- | <code>collapsed</code> | By default, the mbox will be uncollapsed, and the full contents will be shown. However, to change this, this parameter may be used to set an mbox as collapsed by default (e.g., <code><nowiki>|collapsed=true</nowiki></code> would set the mbox to be collapsed by default). | No | — |} ==Design== Some communities may wish to customize the appearance of the mboxes. The most common styling options are provided illustrated in CSS. <syntaxhighlight lang="css" class="mw-collapsible mw-collapsed"> .mbox { /* the background of the entire box */; background-color: ; /* the border color of the entire box */ border-color: ; /* the border thickness of the entire box */ border-width: ; /* the default thick left border color; note this can be changed from within the template implementations using the "color" parameter */ border-left-color: ; /* the rounded-ness of the corners */; border-radius: ; /* the baseline font-size of the mbox */ font-size: ; } .mbox__content { /* the padding inside the mbox */ padding: ; } .mbox__content__image { /* the minimum width of the mbox's image (if bigger, use the "imagewidth" parameter in the template) */ width: ; /* the spacing to the left of the text (i.e., the right of the image) */ padding-right: ; } .mbox__content__text__comment { /* the size of the text in the "comment" parameter */ font-size: ; } .mbox__content__aside { /* any particular modifications to the "aside" area can go here */ /* the maximum width of the aside area */ width: ; } .mbox__close { /* the appearance of the close symbol here */ } .mbox__close:after { /* overwrite "content" here if you do not wish for the close symbol to be × */ content: ''; } .mw-collapsed + .mbox__close { /* modifications to the close symbol when the box is closed */ } .mw-collapsed + .mbox__close:after { /* overwrite "content" here if you do not wish for the close symbol to be + when the box is closed */ content: ''; } </syntaxhighlight> ; Technical notes * Additional inline styles to the root <code>.mbox</code> element can be achieved via the <code>style</code> parameter in the template. == Examples == === Basic MessageBox === <pre> {{MessageBox |header = Header text here |text = Normal text here |id = test1 }}</pre> Produces: {{#invoke:Mbox|main |header = Header text here |text = Normal text here |id = test1 }} === Using types === To use types, CSS variables must be added, such as: <syntaxhighlight lang="css"> :root { --type-important: rgba(200, 0, 0, 0.8); --type-moderate: rgba(233, 124, 47, 0.8); --type-minor: rgba(241, 197, 37, 0.8); } </syntaxhighlight> If added: <pre> {{MessageBox |header = Header text here |type = important |text = Normal text here |id = test2 }}</pre> Produces: {{#invoke:Mbox|main |header = Header text here |type = important |text = Normal text here |id = test2 }} Depending on your styling, there may not be a visual difference in the above example. === With an image === <pre> {{MessageBox |header = Header text here |text = Normal text here |image = Wiki.png |imagelink = |imagewidth = 50px |id = test3 }}</pre> Produces: {{#invoke:Mbox|main |header = Header text here |text = Normal text here |image = Wiki.png |imagelink = |imagewidth = 50px |id = test3 }} === With an aside === <pre> {{MessageBox |header = Header text here |type = important |text = Normal text here |aside = Aside text here |id = test4 }}</pre> Produces: {{#invoke:Mbox|main |header = Header text here |type = important |text = Normal text here |aside = Aside text here |id = test4 }} === Standard/default style === <pre> {{MessageBox |header = Header text here |text = Normal text here |comment = Comment text here |image = Wiki.png |aside = Aside text here |id = standard }}</pre> Produces: {{#invoke:Mbox|main|header=Header text here |text=Normal text here |comment=Comment text here |image=Wiki.png |aside=Aside text here |id=standard}} <includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> ca7c12cf4c7d97a6a3a96c5adc07ee3ceaf78fda Template:Dialogue/doc 10 67 133 132 2022-11-10T22:15:01Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{t|Dialogue}} facilitates the writing of dialogue in a standard format. The template can handle most standard formats of writing dialogue, and can be indented, bulleted or numbered. '''This template ''cannot'' be <code>subst:</code>'d'''. This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Dialogue|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Dialogue/wikitext|Dialogue on Templates Wiki]]'''. ==Syntax== This is how to write the template in [[w:Help:wikitext|wikitext]] onto your article: <pre>{{dialogue |short=full |short=full |short=full ... |Character|Speech |Character|Speech |Character|Speech ... |cite = dialogue description }}</pre> These parameters are explained more fully below. ==Parameters== '''Named parameters specify name shortcuts. They are all optional.''' They are placed at the top of the template call, like this: <pre>{{dialogue |short=full |short=full |short=full ...</pre> Name shortcuts apply to your main dialogue text. If you use a shortcut specified here for a character name, then the full name will be replaced for it. Named parameters of the form "<code>mood1</code>", "<code>mood2</code>", "<code>mood3</code>", etc., up to "<code>mood10</code>", specify moods for the corresponding line number (e.g. "<code>mood1</code>" specifies line 1). They are placed in a line like this: <pre>... |Character|Speech|mood1=angry |Character|Speech|mood2=quiet |Character|Speech|mood3=ecstatic ...</pre> Positional parameters form the text of the dialogue (i.e. any line not containing an "<code>=</code>" will be construed as part of the dialogue. :;<code>Parameter 1</code> ''(required)'' : Character name speaking :;<code>Parameter 2</code> ''(optional)'' : Line to speak :;<code>Parameter 3</code> ''(optional)'' : Next character :;<code>Parameter 4</code> ''(optional)'' : Next line :;<code>Parameter 5</code> ''(optional)'' : Next character :;<code>Parameter 6</code> ''(optional)'' : Next line :;<code>Parameter 7</code> ''(optional)'' : so on... Note: if any character is called "<code>action</code>" then that line will be construed as an action line. It still counts as a ''line'' nonetheless. To write a dialogue description/source, use <code>cite =</code> ==Examples== Here is an example of a full template usage: <pre>{{dialogue |harry=Harry Enfield |bryan=Bryan Adams |harry|Hello! |mood1=happy |bryan|Oh hello there |mood2=surprised |harry|How are you? |mood3=inquisitive |bryan|Quite fine thank you. |mood4=reserved |harry|Oh that's spiffing. |mood5=spiffed |bryan|It is, isn't it?! |mood6=multo-spiffed |harry|Quite so. |mood7=bored |bryan|Well, I'm off! |mood8=joyous |harry|Ta-ta! |mood9=relieved |bryan|Au revoir! |mood10=sarcastic }}</pre> The above would generate: {{dialogue |harry=Harry Enfield |bryan=Bryan Adams |harry|Hello! |mood1=happy |bryan|Oh hello there |mood2=surprised |harry|How are you? |mood3=inquisitive |bryan|Quite fine thank you. |mood4=reserved |harry|Oh that's spiffing. |mood5=spiffed |bryan|It is, isn't it?! |mood6=multo-spiffed |harry|Quite so. |mood7=bored |bryan|Well, I'm off! |mood8=joyous |harry|Ta-ta! |mood9=relieved |bryan|Au revoir! |mood10=sarcastic }} The below code demonstrates examples of extended use: <pre>{{dialogue |george=Georgie Boy |rachel=Rachel |action|Enter: George and Rachel |george|Good morrow dearest Rachel!|mood2=happy |action|Rachel turns to see him |rachel|Oh, George, it's you! |george|... |rachel|Why won't you say anything?!|mood6=worried |action|Enter: Guards |Guards|We are announcing George's arrest! |rachel|Oh my!|mood9=horrified |action|George is dragged away. }}</pre> The above would generate: {{dialogue |george=Georgie Boy |rachel=Rachel |action|Enter: George and Rachel |george|Good morrow dearest Rachel!|mood2=happy |action|Rachel turns to see him |rachel|Oh, George, it's you! |george|... |rachel|Why won't you say anything?!|mood6=worried |action|Enter: Guards |Guards|We are announcing George's arrest! |rachel|Oh my!|mood9=horrified |action|George is dragged away. }} ===Notes=== You can number, bullet or indent your dialogue: <pre>:{{dialogue|Me|Hello|You|Howdido!}}</pre> :{{dialogue|Me|Hello|You|Howdido!}} <pre>#{{dialogue|Me|Hello|You|Howdido!}} #{{dialogue|Them|Good afternoon|Us|What a load of rubbish!}}</pre> #{{dialogue|Me|Hello|You|Howdido!}} #{{dialogue|Them|Good afternoon|Us|What a load of rubbish!}} <pre>*{{dialogue |angel=Fortitude |angel|I am an angel!|Crowd|We don't believe you!}} *{{dialogue |angel=Fortitude |angel|But I'm being quite serious!|Crowd|Too bad for you then!}}</pre> *{{dialogue |angel=Fortitude |angel|I am an angel!|Crowd|We don't believe you!}} *{{dialogue |angel=Fortitude |angel|But I'm being quite serious!|Crowd|Too bad for you then!}} You will get the odd spacing error (e.g. "Speech<code><nowiki><space></nowiki></code>") if you lay out your dialogue on multiple lines. <includeonly>[[Category:Quote templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 56b3a94f307db52b25c728122e451a63e806c791 Template:Namespace/doc 10 68 135 134 2022-11-10T22:15:02Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki This is the {{t|Namespace}} meta-template. It helps other templates detect what type of page they are on. It detects and groups all the different [[Wikipedia:Namespace#Enumeration|namespaces]] used on Fandom into several types: ; main : Main (i.e. article) space, where normal articles are kept. ; talk : Any talk space, including page names that start with "Talk:", "User talk:", "File talk:", etc. ;user ;file ;mediawiki ;template ;help ;category : The remaining namespaces. ; other : Any namespaces that were not specified as a parameter to the template (see explanation below). For backwards compatibility, this template handles '''image''' as if '''file'''. '''image''' (<nowiki>[[Image:...]]</nowiki>) is now deprecated. '''Note:''' For most cases it may be better to use the simpler namespace detection templates (see the [[#See also|see also]] section below). This template is more prone to human errors such as misspelling parameter names. This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Namespace_detect|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Namespace_detect|Namespace_detect on Templates Wiki]]'''. == Usage == This template takes one or more parameters named after the different page types as listed above. Like this: <pre> {{Namespace | main = Article text | talk = Talk page text | other = Other pages text }} </pre> If the template is on a main (article) page, it will return this: : {{Namespace |demospace=main | main = Article text | talk = Talk page text | other = Other pages text }} If the template is on any other page than an article or a talk page, it will return this: : {{Namespace | main = Article text | talk = Talk page text | other = Other pages text }} The example above made the template return something for all page types. But if we don't use the '''other''' parameter or leave it empty, it will not return anything for the other page types. Like this: <pre> {{Namespace | file = File page text | category = Category page text | other = }} </pre> On any pages other than file and category pages the code above will render nothing. <!-- Do not remove this one. It is supposed to render nothing, but we have it here for testing purposes. --> : {{Namespace | file = File page text | category = Category page text | other = }} By using an empty parameter, you can make it so the template doesn't render anything for some specific page type. Like this: <pre> {{Namespace | main = | other = Other pages text }} </pre> The code above will render nothing when on mainspace (article) pages, but will return this when on other pages: : {{Namespace | main = | other = Other pages text }} == Demospace and page == For testing and demonstration purposes, this template can take two parameters named '''demospace''' and '''page'''. '''demospace''' understands any of the page type names used by this template, including the '''other''' type. It tells the template to behave like it is on some specific type of page. Like this: <pre> {{Namespace | main = Article text | other = Other pages text | demospace = main }} </pre> No matter on what kind of page the code above is used, it will return this: : {{Namespace | main = Article text | other = Other pages text | demospace = main }} The '''page''' parameter instead takes a normal pagename, making this template behave exactly as if on that page. The pagename doesn't have to be an existing page. Like this: <pre> {{Namespace | user = User page text | other = Other pages text | page = User:Example }} </pre> No matter on what kind of page the code above is used, it will return this: : {{Namespace | user = User page text | other = Other pages text | page = User:Example }} It can be convenient to let your template understand the '''demospace''' and/or '''page''' parameter and send it on to the {{T|Namespace}} template. Like this: <pre> {{Namespace | main = Article text | other = Other pages text | demospace = {{{demospace|}}} | page = {{{page|}}} }} </pre> If both the '''demospace''' and '''page''' parameters are empty or undefined, the template will detect page types as usual. == Parameters == List of all parameters: <pre> {{Namespace | main = ... | other = | demospace = {{{demospace|}}} / main / talk / user / file / mediawiki / template / help / category / other | page = {{{page|}}} / User:Example }} </pre> == Technical details == If you intend to feed tables as content to the numbered parameters of this template, you need to know this: [[w:Help:Template|Templates]] have a problem handling parameter data that contains pipes "<code>|</code>" unless the pipe is inside another template <code><nowiki>{{name|param1}}</nowiki></code> or inside a piped link <code><nowiki>[[w:Help:Template|help]]</nowiki></code>. Thus templates can not handle [[w:Help:Table|wikitables]] as input unless you escape them by using the <code><nowiki>{{!}}</nowiki></code> [[w:Help:Magic words|magic word]]. This makes it hard to use wikitables as parameters to templates. Instead, the usual solution is to use HTML wikimarkup for the table code, which is more robust. <includeonly>[[Category:General wiki templates]]{{#ifeq:{{SUBPAGENAME}}|sandbox|[[Category:Namespace manipulation templates]]}}</includeonly><noinclude>[[Category:Template documentation]]</noinclude> abd1a20286343a0c76ff9c575682bd5d011f5a6d Module:Dialogue 828 69 137 136 2022-11-10T22:15:02Z BEELETH 2 1 revision imported: Import from Fandom Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Dialogue module from the [[w:c:dev:Global Lua Modules]]. local Dialogue = require('Dev:Dialogue') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Dialogue]] -- The last line produces the output for the template return Dialogue a147d7d4d5837eeb0910d21be2904bbae6658ad2 Module:Hatnote 828 70 139 138 2022-11-10T22:15:03Z BEELETH 2 1 revision imported: Import from Fandom Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Hatnote module from the [[w:c:dev:Global Lua Modules]]. local H = require('Dev:Hatnote') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Hatnote]] -- The last line produces the output for the template return H d52966e186d4771ee7844be7f402467c51644349 Module:Mbox 828 71 141 140 2022-11-10T22:15:03Z BEELETH 2 1 revision imported: Import from Fandom Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Mbox module from the [[w:c:dev:Global Lua Modules]]. local Mbox = require('Dev:Mbox') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Mbox]] -- The imported Module is overwritten locally to include default styling. -- For a more flexible Mbox experience, delete the function below and import -- https://dev.fandom.com/wiki/MediaWiki:Global_Lua_Modules/Mbox.css -- or paste (and modify as you like) its contents in your wiki's -- [[MediaWiki:Wikia.css]] (see [[w:Help:Including_additional_CSS_and_JS]]) -- or look at https://dev.fandom.com/wiki/Global_Lua_Modules/Mbox -- for more customization inspiration -- -- BEGIN DELETION HERE -- local getArgs = require('Dev:Arguments').getArgs local localCSS = mw.loadData('Module:Mbox/data').localStyle function Mbox.main(frame) local args = getArgs(frame) -- styles local styles = {} if args.bordercolor then styles['border-left-color'] = args.bordercolor elseif args.type then styles['border-left-color'] = 'var(--type-' .. args.type .. ')' end if args.bgcolor then styles['background-color'] = args.bgcolor end -- images local image = args.image or '' local imagewidth = args.imagewidth or '80px' local imagelink = '' if args.imagelink then imagelink = '|link=' .. args.imagelink end local imagewikitext = ('%sFile:%s|%s%s' .. ']]'):format('[[', image, imagewidth, imagelink) -- id for closure local id = args.id or 'mbox' local container = mw.html.create('div') :addClass('mbox') :addClass(args.class) :css(styles) :css(localCSS['mbox']) :cssText(args.style) local content = container:tag('div') :addClass('mbox__content') :css(localCSS['mbox__content']) if args.image then local image = content:tag('div') :addClass('mbox__content__image') :addClass('mw-collapsible') :attr('id', 'mw-customcollapsible-' .. id) :css(localCSS['mbox__content__image']) :wikitext(imagewikitext) if args.collapsed then image:addClass('mw-collapsed') end end local contentwrapper = content:tag('div') :addClass('mbox__content__wrapper') :css(localCSS['mbox__content__wrapper']) if args.header then contentwrapper:tag('div') :addClass('mbox__content__header') :css(localCSS['mbox__content__header']) :wikitext(args.header) end if args.text then local text = contentwrapper:tag('div') :addClass('mbox__content__text') :addClass('mw-collapsible') :attr('id', 'mw-customcollapsible-' .. id) :css(localCSS['mbox__content__text']) :wikitext(args.text) if args.collapsed then text:addClass('mw-collapsed') end if args.comment then text:tag('div') :addClass('mbox__content__text__comment') :css(localCSS['mbox__content__text__comment']) :wikitext(args.comment) end end contentwrapper:tag('span') :addClass('mbox__close') :addClass('mw-customtoggle-' .. id) :css(localCSS['mbox__close']) :attr('title', 'Dismiss') if args.aside then local aside = content:tag('div') :addClass('mbox__content__aside') :addClass('mw-collapsible') :attr('id', 'mw-customcollapsible-' .. id) :css(localCSS['mbox__content__aside']) :wikitext(args.aside) if args.collapsed then aside:addClass('mw-collapsed') end end return container end -- -- END DELETION HERE -- -- The last line produces the output for the template return Mbox 1c196d668f9209faef3e9a78c1f082f1c8573042 Module:Mbox/data 828 72 143 142 2022-11-10T22:15:04Z BEELETH 2 1 revision imported: Import from Fandom Scribunto text/plain local localStyle = { ['mbox'] = { ['display'] = 'flex', ['position'] = 'relative', ['border'] = '1px solid #d6d6d6', ['border-left-width'] = '8px', ['border-left-color'] = '#d6d6d6', ['border-radius'] = '3px', ['margin-bottom'] = '5px', ['min-height'] = '32px' }, ['mbox__content'] = { ['display'] = 'table', ['box-sizing'] = 'border-box', ['width'] = '100%', ['padding'] = '8px 15px' }, ['mbox__content__image'] = { ['display'] = 'table-cell', ['width'] = '40px', ['height'] = '100%', ['text-align'] = 'center', ['vertical-align'] = 'middle', ['padding-right'] = '15px' }, ['mbox__content__wrapper'] = { ['display'] = 'table-cell', ['vertical-align'] = 'middle' }, ['mbox__content__header'] = { ['display'] = 'block', ['font-weight'] = 'bold' }, ['mbox__content__text'] = { ['display'] = 'block' }, ['mbox__content__text__comment'] = { ['font-size'] = 'small' }, ['mbox__content__aside'] = { ['display'] = 'table-cell', ['width'] = '100px', ['vertical-align'] = 'middle', ['text-align'] = 'center', ['padding-left'] = '15px', ['border-left'] = '1px solid #d6d6d6' }, ['mbox__close'] = { ['position'] = 'absolute', ['right'] = '0', ['top'] = '0', ['padding'] = '2px 7px', ['font-weight'] = 'bold', ['font-size'] = '16px', ['color'] = '#bbb', ['cursor'] = 'pointer', ['transition'] = 'all .15s ease-in' } } return { localStyle = localStyle } 7afdc5979e3b8bc8d21b52929058ba24c351dbdc Module:Namespace detect 828 73 145 144 2022-11-10T22:15:05Z BEELETH 2 1 revision imported: Import from Fandom Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Namespace_detect module from the [[w:c:dev:Global Lua Modules]]. local NS = require('Dev:Namespace_detect') -- Local configuration can be modified in -- [[Module:Namespace detect/data]] and -- [[Module:Namespace detect/config]] -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Namespace detect]] -- The last line produces the output for the template return NS 108c1bd4f38e4a0b40b9a85178a4d68cd557cef3 Module:Namespace detect/config 828 74 147 146 2022-11-10T22:15:05Z BEELETH 2 1 revision imported: Import from Fandom Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports from the [[w:c:dev:Global Lua Modules]]. local nsConfiguration = require('Dev:Namespace_detect/config') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Namespace_detect]] -- The imported Module is overwritten locally to include default configuration. -- For a more flexible experience, delete the page import -- and paste (and modify as you like) its contents into this page -- https://dev.fandom.com/wiki/Module:Namespace_detect/config -- The last line produces the output for the template return nsConfiguration 22ca76ef47387cf20b5fcc7d1f14687f0b2da915 Module:Namespace detect/data 828 75 149 148 2022-11-10T22:15:06Z BEELETH 2 1 revision imported: Import from Fandom Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports from the [[w:c:dev:Global Lua Modules]]. local nsData = require('Dev:Namespace_detect/data') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Namespace_detect]] -- The imported Module is overwritten locally to include default configuration. -- For a more flexible experience, delete the page import -- and paste (and modify as you like) its contents into this page -- https://dev.fandom.com/wiki/Module:Namespace_detect/data -- The last line produces the output for the template return nsData 4056c252664c31f05a9d54c48fcd865cdf41dd9f Module:Navbox 828 76 151 150 2022-11-10T22:15:06Z BEELETH 2 1 revision imported: Import from Fandom Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Navbox module from the [[w:c:dev:Global Lua Modules]]. local N = require('Dev:Navbox') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Navbox]] -- The last line produces the output for the template return N 7c5d05d6cc02dafdd64b46ca3fbdc3f808e53e5b Module:Quote 828 77 153 152 2022-11-10T22:15:07Z BEELETH 2 1 revision imported: Import from Fandom Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Quote module from the [[w:c:dev:Global Lua Modules]]. local Quote = require('Dev:Quote') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Quote]] -- The last line produces the output for the template return Quote 6918bf52f0c3bdbd83cc4611b6243a659e7d800b Category:Disambiguations 14 78 155 154 2022-11-10T22:15:07Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki [[Category:{{SITENAME}}]] dd8aaa34cf600c1567d240a3f4bc615164a11592 Category:Quote templates 14 79 157 156 2022-11-10T22:15:08Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Notice templates 14 80 159 158 2022-11-10T22:15:08Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Candidates for deletion 14 81 161 160 2022-11-10T22:15:09Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ This category contains articles that have been marked as candidates for deletion with the {{T|Delete}} template. '''Administrators, before deleting these pages''' make sure you check each page's discussion page, what links to each page, and the history of each page before proceeding with the deletion. [[Category:Maintenance]] a73d7b53cf0697a0682f842f1a71aafbe127aade Template:= 10 82 163 162 2022-11-10T22:15:09Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly>=</includeonly><noinclude> {{documentation}}<noinclude> 8f9d55b93874a691b84a9b6acb54bc6dd01fbf39 Template:=/doc 10 83 165 164 2022-11-10T22:15:09Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description :This template is used when escaping <code>=</code> when contained in [[w:Help:Parser functions|Parser functions]]. ;This template cannot be substituted. ;Syntax :Insert this template using <code>{{t|{{=}}}}</code> <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> ce8f267527b35c852e8190c38416584783aa37ac Template:Clear 10 84 167 166 2022-11-10T22:15:10Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly><div style="clear:{{{1|both}}}"></div></includeonly><noinclude> {{documentation}}</noinclude> 02f4c0e17d50c41f902cad74e6d937f585ba4719 Template:Cols 10 85 169 168 2022-11-10T22:15:10Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly><div style="column-count: {{{1}}};">{{{2}}}</div></includeonly><noinclude> {{documentation}}</noinclude> 7e455c29d8571535f2a7692bcd711e2d0547441c Template:Space 10 86 171 170 2022-11-10T22:15:10Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly>&#32;</includeonly><noinclude> {{documentation}}</noinclude> e1c3d6d869303e7cc9d8a997c69b01995b7e4928 Template:Tocright 10 87 173 172 2022-11-10T22:15:11Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly><div style="float:right; clear:{{{clear|right}}}; margin-bottom:.5em; padding:.5em 0 .8em 1.4em; background:transparent; max-width:20em;">__TOC__</div></includeonly><noinclude> {{documentation}}</noinclude> e05836955bb88801d044130d69154745f45c7642 Template:Trim 10 88 175 174 2022-11-10T22:15:11Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly>{{#if:{{{1|}}}|{{{1}}}|}}</includeonly><noinclude> {{documentation}}</noinclude> 21c7177ac37ea769b22ca26a2493df055a56f87a Template:Cols/doc 10 89 177 176 2022-11-10T22:15:11Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description This template formats the text into the specified number of columns. ;Syntax <pre>{{cols|<# of columns>|<content>}}</pre> Especially useful to wrap long lists of items into multiple columns. <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 763fc74c9235663a500bcc69a50d425c77c16cb0 Template:Space/doc 10 90 179 178 2022-11-10T22:15:12Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description This template allows you to force a space in areas that strip whitespace. <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> e361d3f5c2ca3c7d7503d9bb0d311e9d440c3cc2 Template:Tocright/doc 10 91 181 180 2022-11-10T22:15:13Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description {{t|tocright}} forces the auto-generated Table of Contents for an article to appear floated to the right side of the page, in order to improve article layout. <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 1449f71ce473315e9f2ad72064ee5c76ed00c89d Template:Trim/doc 10 92 183 182 2022-11-10T22:15:13Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description This template trims whitespace from the beginning and end of the supplied value. It works by using the simple hack of filtering it through the <code>#if</code> parser function. ;Syntax <nowiki>{{trim| value }}</nowiki> <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> f1f126e3f6fe8474d693ec499d71a9c4067043f9 Template:Clear/doc 10 93 185 184 2022-11-10T22:15:13Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description This template allows you to clear the left side, right side, or both sides of the page. Clearing means that the content following the template will not be displayed until the existing content on the specified sides (for example, "hanging" or floating images or blocks) is displayed completely. This template is often used so that the text does not flow around unrelated images. The template adds the following code to the page: <code><nowiki><div style="clear:left/right/both;"></div></nowiki></code> (the value after <code>clear</code> depends on the parameters). This code affects elements with the CSS property <code>float</code>, including files floated to the side (for example, <code><nowiki>[[File:Image.png|right]]</nowiki></code>). ;Syntax * To clear both sides of the page, add the code {{t|Clear}}. * To clear only the left side of the page, add the code {{t|Clear|left}}. * To clear only the right side of the page, add the code {{t|Clear|right}}. You can also use {{t|-}} instead of {{t|Clear}} as a shorthand call for this template. __NOTOC__ ;Example <pre style="display:table"> === Section 1 === [[File:Example.jpg|200px|right]] Section 1 text. === Section 2 === Section 2 text. {{Clear|right}} === Section 3 === Section 3 text. </pre> This code produces the following result: ---- === Section 1 === [[File:Example.jpg|200px|right]] Section 1 text. === Section 2 === Section 2 text. {{Clear|right}} === Section 3 === Section 3 text. ---- As you can see above, the example image added in section 1 is displayed to the right and extends down through section 2, while the {{t|Clear}} template is called at the end of the second section, resulting in the example image not being next to section 3. Thus, one use of the {{t|Clear}} template is to control which elements are displayed next to which other elements. == See also == * [https://developer.mozilla.org/en-US/docs/Web/CSS/clear CSS property <code>clear</code> on MDN] * [https://developer.mozilla.org/en-US/docs/Web/CSS/float CSS property <code>float</code> on MDN] <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 23cbf4a368710af74b5a7e729c6a7205939cd5de File:Example.jpg 6 94 187 186 2022-11-10T22:15:14Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki == Summary == {{PD}} [[Category:Images]] b45ad4275ad2f01c536d8fee443ea7264309586b Category:Images 14 95 189 188 2022-11-10T22:15:15Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki [[Category:Media]] b141d2b9971d6efe9f59bd03449781e71411c631 Category:Media 14 96 191 190 2022-11-10T22:15:15Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki [[Category:{{SITENAME}}]] dd8aaa34cf600c1567d240a3f4bc615164a11592 Template:Game 10 97 193 192 2022-11-10T22:15:16Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly><infobox> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"> <caption source="caption"/> </image> <data source="developer"><label>Developer</label></data> <data source="publisher"><label>Publisher</label></data> <data source="engine"><label>Engine</label></data> <data source="version"><label>Version</label></data> <data source="platform"><label>Platform</label></data> <data source="releasedate"><label>Release date</label></data> <data source="genre"><label>Genre</label></data> <data source="mode"><label>Mode</label></data> <data source="rating"><label>Rating</label></data> <data source="media"><label>Media</label></data> <group collapse="open"> <header>System requirements</header> <data source="requirements"></data> </group> </infobox></includeonly><noinclude>{{Documentation}}</noinclude> 632ebe6f3e8bab75f012f57996157e6b71f04c2c Template:Game/doc 10 98 195 194 2022-11-10T22:15:16Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre>{{Game | title = The game's name, displayed on top of the infobox | image = [e.g. "Example.jpg"] | developer = | publisher = | engine = The engine the game runs on | version = Most recently released version of the game. If your wiki does patch notes, you may wish to link to those. | platform = Platform(s) the game is available on | releasedate = When the game released | genre = Genre(s) the game is classified as | mode = Singeplayer, multiplayer, etc. | rating = ESRB / PEGI, etc. ratings | media = What media the game is available on (digital, cartridge, cd, etc.) | requirements = System requirements }}</pre> == Sample output == {{Game | title = The Game of Flower | image = Example.jpg | developer = | publisher = | engine = | version = | platform = PC | releasedate = Soon | genre = RPG | mode = Single player | rating = | media = | requirements = Cutting edge hardware }} <pre>{{Game | title = The Game of Flower | image = Example.jpg | developer = | publisher = | engine = | version = | platform = PC | releasedate = Soon | genre = RPG | mode = Single player | rating = | media = | requirements = Cutting edge hardware }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> f43ae1af35184ba75281f54d6c3683a202f5fd69 Template:LicenseBox 10 99 197 196 2022-11-10T22:15:17Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly><div style="border-collapse: collapse; border-color: #d6d6d6; border-radius: 3px; border-style: solid; border-left-width: 8px; border-bottom-width: 1px; border-right-width: 1px; border-top-width: 1px; display: flex; margin: 0 auto 5px auto; min-height: 32px; padding: 0.25em 0.5em; {{{style|}}}" class="article-table plainlinks {{{class|}}}"> {{#if:{{{image|}}} | <span style="padding: 2px 0px 2px 0.5em; text-align: center; width: 60px;">[[File:{{{image}}}{{!}}48px{!}}alt{{=}}]]</span>}} {{{text|''Your license text is not specified''}}} </div></includeonly><noinclude> {{documentation}}</noinclude> 069ed63c4b14e0275262b6d3e8d9e91ecba49744 Template:LicenseBox/doc 10 100 199 198 2022-11-10T22:15:18Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description :This template is used to create the box used by the various image license templates. The default styling is currently geared to a light-themed wiki. If your wiki has a dark theme and this template is too bright relative to the other elements on your wiki, simply change the following style parameters: :<code>background-color:</code> This is the color of the background and is currently set to: <code>#fefefe</code> :<code>border-color:</code> This is the color of the borders and is currently set to: <code>#d6d6d6</code> :<code>color:</code> This is the color of the text and is currently set to: <code>#333</code> ;Syntax :Type <code>{{t|LicenseBox|text{{=}}License text}}</code> on the image information page. <includeonly>[[Category:Image license templates| ]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 9ec2738036e3818826b937975731274577856c0d Template:- 10 101 201 200 2022-11-10T22:15:19Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki #REDIRECT [[Template:Clear]] 1a2aa4a9ba7478e54a2b21cbce68887ea297ea86 Template:Stub 10 102 203 202 2022-11-10T22:15:19Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{MessageBox |header = Stub |type = stub |text = ''This article is a [[:Category:Stubs|stub]]. You can help {{SITENAME}} by [{{fullurl:{{FULLPAGENAME}}|action=edit}} expanding it].'' |comment = |class = notice hidden plainlinks |id = stub }}<includeonly>[[Category:Stubs]]</includeonly><noinclude> {{Documentation}}</noinclude> 613ef53fa1801107adb93e3c0eb28209ba253a26 Category:Stubs 14 103 205 204 2022-11-10T22:15:19Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ This category contains articles that are noticeably incomplete regardless of their length and are tagged with the {{T|Stub}} template. If any of these articles seem to approach completion or manage to become complete, please remove the template from the page so they are no longer listed here. Please help our Wiki by writing in these articles if you know what you're talking about. [[Category:Maintenance]] 119791ec2b436de13f77e8541c85704c8902eaaf Template:Stub/doc 10 104 207 206 2022-11-10T22:15:20Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description :This template is used to identify a stub. Any pages using this template will be automatically placed in the [[:Category:Stubs|Stubs]] category. <includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> fe9e5e7f5e645666194f69dc88d7d12b5429e8f8 Template:MIT 10 105 209 208 2022-11-10T22:15:20Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{LicenseBox|text=''This work is licensed under the [https://opensource.org/licenses/MIT MIT License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:MIT license files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> fa53e460d1a0d2cfb9e350fa64292cc428aed859 Template:LGPL 10 106 211 210 2022-11-10T22:15:21Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{LicenseBox|text=''This work is licensed under the [https://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:LGPL files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> 066b54eb9300540d46a07b5148865821bd3b2f08 Template:GFDL 10 107 213 212 2022-11-10T22:15:22Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{LicenseBox|text=''This file is licensed under the GFDL. Permission is granted to copy, distribute and/or modify this image under the terms of the '''[[Wikipedia:Text of the GNU Free Documentation License|GNU Free Documentation License]]''', Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:GFDL files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> b3c309cd585718bb7808409474f98a1c5ec46103 Template:MIT/doc 10 108 215 214 2022-11-10T22:17:47Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description :This template is used to mark images using the MIT license. ;Syntax :Type <code>{{t|MIT}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> f243f408a7cb3acce5635655a2648b3dcd892584 Template:LGPL/doc 10 109 217 216 2022-11-10T22:17:48Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description :This template is used to mark images using the LGPL. ;Syntax :Type <code>{{t|LGPL}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> a1352dd235ba24762d42130c24a5a7971e1cdd31 Template:GFDL/doc 10 110 219 218 2022-11-10T22:17:48Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description :This template is used to mark images using the GFDL. ;Syntax :Type <code>{{t|GFDL}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> cb8fb84dfc8e1d8b8544fdff7530dce231764a63 Template:Nolicense 10 111 221 220 2022-11-10T22:17:49Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{LicenseBox|text=''This file does not have information on its copyright status.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Unattributed files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> a99128c5d8a0cd0723b13b6d9e5fd78b18dbedec Category:Unattributed files 14 112 223 222 2022-11-10T22:17:49Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ The files in this category do not have an appropriate license selected and are tagged with the {{t|nolicense}} template. Administrators should review files in this category and either: * Update the file page with an appropriate if one can be easily determined. * Delete the image, though it is good idea to give the uploader a chance to select a license first. [[Category:Images]] [[Category:Maintenance]] fe16ed203269a56dcbf8a76f72943484fe67047f Template:Nolicense/doc 10 113 225 224 2022-11-10T22:17:49Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki ;Description :This template is used to mark images where the copyright status is not known. It automatically adds the images to the [[:Category:Unattributed files|Unattributed files]] category for later maintenance ;Syntax :Type <code>{{t|Nolicense}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 346dcb940ca838c854f75f3db5229b97cce87d40 File:Favicon.ico 6 114 227 226 2022-11-10T22:17:50Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki == Licensing == {{CC-BY-SA}} [[Category:Wiki skin images]] 4d9dc3162be921e39ea7166659dae4b8fe461b71 Category:Hatnote templates with errors 14 115 229 228 2022-11-10T22:17:50Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki [[Category:Maintenance]] a106a39e26c77e7b2ec90cb83728a6446cb6a1a1 Module:Mbox/doc 828 116 231 230 2022-11-10T22:17:51Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki This module is used by most of the basic [[:Category:Notice templates|Notice templates]] and is invoked by {{t|MessageBox}}. f4a47833d87441e40c6613bb641eb72f6207cbb1 Module:Mbox/data/doc 828 117 233 232 2022-11-10T22:17:51Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki This is a sub-module of [[Module:Mbox]] and is used to specify the CSS properties for message boxes. fcd42c844d485c7da3317a85c9521ea96145cb35 Module:Quote/doc 828 118 235 234 2022-11-10T22:17:51Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki This module is used by most of the basic [[:Category:Quote templates|Quote templates]] and is invoked by {{t|Quote}}. 665dce984d14e47c31477a42382fecb536de1da7 Module:Dialogue/doc 828 119 237 236 2022-11-10T22:17:52Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki This module is invoked by the {{t|Dialogue}} template. d22c926bd1a5c2221b42dc1a05b2326ecaaa6712 Module:Hatnote/doc 828 120 239 238 2022-11-10T22:17:52Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki This module is invoked by the {{t|Hatnote}} template, which is used by a number of [[:Category:Notice templates|Notice templates]]. b5c1fc43f0f6bd96416f2fec21a7da0b34ae8aac Module:Navbox/doc 828 121 241 240 2022-11-10T22:17:53Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki This module is invoked by the {{t|Navbox}} template. Navbox templates are not displayed for mobile users. 23d4ed4b22c8bf7316431e1f6df6d4d5d9de1ef5 Module:Namespace detect/doc 828 122 243 242 2022-11-10T22:17:53Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki This module is invoked by the {{t|Namespace}} template. 157d889ae2f345f719a68f459ee2ca550d14afb5 Module:Namespace detect/data/doc 828 123 245 244 2022-11-10T22:17:53Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki This module holds data for [[Module:Namespace detect]] to be loaded per page, rather than per #invoke, for performance reasons. 4b5f88c95a81f026633adaae2556eeaa2896fd6f Module:Namespace detect/config/doc 828 124 247 246 2022-11-10T22:17:54Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki This module stores configuration data for Module:Namespace detect. Here you can localise the module to your wiki's language. To activate a configuration item, you need to uncomment it. This means that you need to remove the text "-- " at the start of the line. 5b3ec654956a66588b67fedc310584e2769e6f5c Template:Series 10 125 249 248 2022-11-10T22:17:54Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly><infobox> <title source="title"><default>'' {{#explode:{{PAGENAME}}|(}} ''</default></title> <image source="image"><caption source="caption" /></image> <data source="release"><label>First released</label></data> <data source="seasons"><label>Seasons</label></data> <data source="episodes"><label>Episodes</label></data> <data source="runtime"><label>Run time</label></data> <data source="genre"><label>Genre</label></data> <data source="network"><label>Network</label></data> <data source="distrib"><label>Distributor</label></data> <data source="creator"><label>Created by</label></data> <data source="writer"><label>Written by</label></data> <data source="director"><label>Directed by</label></data> <data source="composer"><label>Composer</label></data> <data source="based on"><label>Based on</label></data> <data source="exec prod"><label>Executive producer</label></data> <data source="producer"><label>Producer</label></data> <data source="prod co"><label>Production company</label></data> <data source="country"><label>Country</label></data> <data source="language"><label>Language</label></data> </infobox></includeonly><noinclude>{{documentation}}</noinclude> f2e00daecd3f3df5c31267e0a9ffd721ac2f186d Template:Series/doc 10 126 251 250 2022-11-10T22:17:55Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Series | title = | image = | caption = | release = | seasons = | episodes = | runtime = | genre = | network = | distrib = | creator = | writer = | director = | composer = | based on = | exec prod = | producer = | prod co = | country = | language = }}</pre> == Sample output == {{Series | title = ''Default page title'' | image = Wiki.png | caption = Test | release = Test | seasons = Test | episodes = Test | runtime = Test | genre = Test | network = Test | distrib = Test | creator = Test | writer = Test | director = Test | composer = Test | based on = Test | exec prod = Test | producer = Test | prod co = Test | country = Test | language = Test }} <pre>{{Series | title = ''Default page title'' | image = Wiki.png | caption = Test | release = Test | seasons = Test | episodes = Test | runtime = Test | genre = Test | network = Test | distrib = Test | creator = Test | writer = Test | director = Test | composer = Test | based on = Test | exec prod = Test | producer = Test | prod co = Test | country = Test | language = Test }}</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 7f9a7daecb805234290cd4addefc0c049fe125ce Template:Film 10 127 253 252 2022-11-10T22:17:55Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly><infobox> <title source="title"><default>'' {{#explode:{{PAGENAME}}|(}} ''</default></title> <image source="image"><caption source="caption"/></image> <group> <data source="premiere"><label>Premiere date</label></data> <data source="genre"><label>Genre</label></data> <data source="rating"><label>Rating</label></data> <data source="runtime"><label>Runtime</label></data> <data source="director"><label>Directed by</label></data> <data source="writer"><label>Written by</label></data> <data source="music"><label>Music by</label></data> <data source="producer"><label>Produced by</label></data> <data source="budget"><label>Budget</label></data> <data source="earned"><label>Box Office</label></data> </group> <group layout="horizontal"> <header>Series</header> <data source="previous"><label>← Previous</label></data> <data source="next"><label>Next →</label></data> </group> </infobox>{{Namespace|main=[[Category:Films]]}}</includeonly><noinclude>{{documentation}}</noinclude> 92b5337f22ec52309cba873beaf3cdb11d2f64e0 Template:Film/doc 10 128 255 254 2022-11-10T22:17:56Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Film | title = | image = | caption = | premiere = | genre = | rating = | runtime = | director = | writer = | music = | producer = | budget = | earned = | previous = | next = }} </pre> == Sample output == {{Film | title = This is a test | image = Wiki.png | caption = This is a test | premiere = This is a test | genre = This is a test | rating = This is a test | runtime = This is a test | director = This is a test | writer = This is a test | music = This is a test | producer = This is a test | budget = This is a test | earned = This is a test | previous = This is a test | next = This is a test }} <pre> {{Film | title = This is a test | image = Wiki.png | caption = This is a test | premiere = This is a test | genre = This is a test | rating = This is a test | runtime = This is a test | director = This is a test | writer = This is a test | music = This is a test | producer = This is a test | budget = This is a test | earned = This is a test | previous = This is a test | next = This is a test }} }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> b085f97e35a2ac96b5ddf92a22e98fbd93933736 Template:Season 10 129 257 256 2022-11-10T22:17:56Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly><infobox type="Season"> <title source="title"><default>{{PAGENAME}}</default></title> <image source="image"><caption source="caption"/></image> <data source="season"><label>Season</label></data> <data source="episodes"><label>Episodes</label></data> <data source="premiere"><label>Premiered</label></data> <group layout="horizontal"> <header>Navigation</header> <data source="previous"><label>← Previous</label></data> <data source="next"><label>Next →</label></data> </group> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Seasons]]}}</includeonly><noinclude>{{documentation}}</noinclude> 2e09c5f43c99d98363971b63ad639874c5e6c452 Template:Season/doc 10 130 259 258 2022-11-10T22:17:57Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Season | title = | image = | caption = | season = | episodes = | premiere = | previous = | next = }} </pre> == Sample output == {{Season | title = This is a test | image = Wiki.png | caption = This is a test | season = This is a test | episodes = This is a test | premiere = This is a test | previous = This is a test | next = This is a test }} <pre> {{Season | title = This is a test | image = Wiki.png | caption = This is a test | season = This is a test | episodes = This is a test | premiere = This is a test | previous = This is a test | next = This is a test }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> b3f82f2223cf6f8323820bce6de5427e4b6a1380 Template:Cast 10 131 261 260 2022-11-10T22:17:57Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly><infobox> <title source="name"><default>{{PAGENAME}}</default></title> <image source="image"><caption source="caption" /></image> <data><label>Born</label> <default>{{#if: {{{birthname|}}} | {{{birthname|}}} }}{{#if: {{{birthdate|}}} | {{#if: {{{birthname|}}} | <br />}}{{{birthdate|}}}{{#if: {{{birthplace|}}} | <br />}} }}{{#if: {{{birthplace|}}} | {{#if: {{{birthdate|}}} || {{#if: {{{birthname|}}}|<br />}} }}{{{birthplace|}}} }}</default> </data> <data><label>Died</label> <default>{{#if: {{{deathdate|}}} | {{{deathdate|}}} }}{{#if: {{{deathplace|}}} | {{#if: {{{deathdate|}}} | <br />}}{{{deathplace|}}} }}</default> </data> <data source="gender"><label>Gender</label></data> <data source="height"><label>Height</label></data> <data source="occupation"><label>Occupation</label></data> <data source="appears in"><label>Appears in</label></data> <data source="portrays"><label>Portrays</label></data> </infobox>{{Namespace|main=[[Category:Cast]]<!-- -->{{#if: {{#pos:{{{appears in|}}} | TITLE}} | [[Category:TITLE cast]] }}<!-- -->}}</includeonly><noinclude>{{documentation}}</noinclude> b1e4767be7d53e599ae3ac18e9f41dff90fdfe89 Template:Cast/doc 10 132 263 262 2022-11-10T22:17:58Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Cast | name = | image = | caption = | birthname = | birthdate = | birthplace = | deathdate = | deathplace = | gender = | height = | occupation = | appears in = | portrays = }} </pre> == Sample output == {{Cast | name = Test | image = Wiki.png | caption = Test | birthname = Name | birthdate = Date | birthplace = Place | deathdate = Date | deathplace = Place | gender = Test | height = Test | occupation = Test | appears in = Test | portrays = Test }} <pre> {{Cast | name = Test | image = Wiki.png | caption = Test | birthname = Name | birthdate = Date | birthplace = Place | deathdate = Date | deathplace = Place | gender = Test | height = Test | occupation = Test | appears in = Test | portrays = Test }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> fea3e74e01ad2f66bb54f921f82426cb1a7fa748 Template:Cite web 10 133 265 264 2022-11-10T22:17:58Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <includeonly>{{ #if: {{#if: {{{url|}}} | {{#if: {{{title|}}} |1}}}} ||Error on call to [[Template:cite web]]: Parameters '''url''' and '''title''' must be specified }}{{ #if: {{{archiveurl|}}}{{{archivedate|}}} | {{#if: {{#if: {{{archiveurl|}}}| {{#if: {{{archivedate|}}} |1}}}} ||Error on call to [[template:cite web]]: Parameters '''archiveurl''' and '''archivedate''' must be both specified or both omitted }} }}{{#if: {{{author|}}}{{{last|}}} | {{#if: {{{authorlink|}}} | [[{{{authorlink}}}|{{#if: {{{last|}}} | {{{last}}}{{#if: {{{first|}}} | , {{{first}}} }} | {{{author}}} }}]] | {{#if: {{{last|}}} | {{{last}}}{{#if: {{{first|}}} | , {{{first}}} }} | {{{author}}} }} }} }}{{#if: {{{author|}}}{{{last|}}} | {{#if: {{{coauthors|}}}| <nowiki>;</nowiki>&#32;{{{coauthors}}} }} }}{{#if: {{{author|}}}{{{last|}}}| {{#if: {{{date|}}} | &#32;({{{date}}}) | {{#if: {{{year|}}} | {{#if: {{{month|}}} | &#32;({{{month}}} {{{year}}}) | &#32;({{{year}}}) }} }} |}} }}{{#if: {{{last|}}}{{{author|}}} | .&#32;}}{{ #if: {{{editor|}}} | &#32;{{{editor}}}: }}{{#if: {{{archiveurl|}}} | {{#if: {{{archiveurl|}}} | {{#if: {{{title|}}} | [{{{archiveurl}}} {{{title}}}] }}}} | {{#if: {{{url|}}} | {{#if: {{{title|}}} | [{{{url}}} {{{title}}}] }}}} }}{{#if: {{{language|}}} | &#32;<span style="font-size: 0.95em; font-weight: bold; color:#555; position: relative;">({{{language}}})</span> }}{{#if: {{{format|}}} | &#32;({{{format|}}}) }}{{#if: {{{work|}}} | .&#32;''{{{work}}}'' }}{{#if: {{{pages|}}} | &#32;{{{pages}}} }}{{#if: {{{publisher|}}} | .&#32;{{{publisher}}}{{#if: {{{author|}}}{{{last|}}} | | {{#if: {{{date|}}}{{{year|}}}{{{month|}}} || }} }} }}{{#if: {{{author|}}}{{{last|}}} ||{{#if: {{{date|}}} | &#32;({{{date}}}) | {{#if: {{{year|}}} | {{#if: {{{month|}}} | &#32;({{{month}}} {{{year}}}) | &#32;({{{year}}}) }} }} }} }}.{{#if: {{{archivedate|}}} | &#32;Archived from [{{{url}}} the original] on {{#time:F j, Y|{{{archivedate}}}}}{{#if: {{{archiveyear|}}} | , {{{archiveyear}}} }}. }}{{#if: {{{accessdate|}}} | &#32;Retrieved on {{#time:F j, Y|{{{accessdate}}}}}{{#if: {{{accessyear|}}} | , {{{accessyear}}} }}. }}{{#if: {{{accessmonthday|}}} | &#32;Retrieved on {{{accessmonthday}}}, {{{accessyear}}}. }}{{#if: {{{accessdaymonth|}}} | &#32;Retrieved on {{{accessdaymonth}}} {{{accessyear}}}. }}{{#if: {{{quote|}}} | &nbsp;“{{{quote}}}” }}</includeonly><noinclude>{{documentation}} </noinclude> 06085b03744dda1cb654deed7c8e92495d7593a6 Template:Cite web/doc 10 134 267 266 2022-11-10T22:18:00Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki __NOTOC__ This template is used to [[Wikipedia:WP:CITE|cite sources]] in Wikipedia. It is specifically for web sites which are not news sources. This template replaces deprecated [[Wikipedia:Template:Teb reference|template:web reference]]. It provides lower case parameters only. A general discussion of the use of templates for adding citation of open-source web content to Wikipedia articles is available at [[Wikipedia:Citation templates|citation templates]]. This page uses [[w:Wikia:Licensing|Creative Commons Licensed]] content from [[w:c:Wookieepedia:Template:Cite web|Wookieepedia]] == Usage == ;Common form for cases where little is known about authorship of the page (with current date) <tt><nowiki>{{Cite web |url= |title= |accessdate=</nowiki>{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}<nowiki> |format= |work= }}</nowiki></tt> ;Using last, first (with current date) <tt><nowiki>{{Cite web |url= |title= |accessdate=</nowiki>{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}<nowiki> |last= |first= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt> ;Using author (with current date) <tt><nowiki>{{Cite web |url= |title= |accessdate=</nowiki>{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}<nowiki> |author= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt> ;Using non-linked retrieved date, last, first <tt><nowiki>{{Cite web |url= |title= |accessmonthday= |accessyear= |last= |first= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt> ;Using non-linked retrieved date, author <tt><nowiki>{{Cite web |url= |title= |accessmonthday= |accessyear= |author= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt> ;All parameters, horizontal format (delete the ones you don't need) <tt><nowiki>{{Cite web |url= |title= |accessdate= |accessmonthday= |accessdaymonth = |accessyear= |author= |last= |first= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt> ;All parameters, vertical format <pre>{{Cite web | url = | title = | accessdate = | accessdaymonth = | accessmonthday = | accessyear = | author = | last = | first = | authorlink = | coauthors = | date = | year = | month = | format = | work = | publisher = | pages = | language = | archiveurl = | archivedate = | quote = }}</pre> === Required parameters === * '''url''': URL of online item. * '''title''': Title of online item. ''For producing a [[Wikipedia:WP:CONTEXT#Dates|wikilinked date]] of retrieval:'' :* '''accessdate''': Full date when item was accessed, in [[Wikipedia:ISO 8601|ISO 8601]] YYYY-MM-DD format, for example "accessdate = {{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}". ''Must not be wikilinked'' ''For producing a non-wikilinked date of retrieval:'' :* '''accessmonthday''' and '''accessyear''': Month and day when item was accessed, for example "accessmonthday = May 10", <u>and</u> year when item was accessed, for example "accessyear = 2005". Produces: ''Retrieved on May 10, 2006.'' :* '''accessdaymonth''' and '''accessyear''': Month and day when item was accessed, for example "accessmonthday = 10 May", <u>and</u> year when item was accessed, for example "accessyear = 2005". Produces: ''Retrieved on 10 May 2006.'' === Optional parameters === * '''author''': Author ** '''last''' works with '''first''' to produce <code>last, first</code> ** '''authorlink''' works either with '''author''' or with '''last''' & '''first''' to link to the appropriate wikipedia article. Does not work with URLs. ** '''coauthors''': allows additional authors * '''date''': Full date of publication, preferably in [[Wikipedia:ISO 8601|ISO 8601]] YYYY-MM-DD format, e.g. ''2006-02-17''. May be wikilinked. ** OR: '''year''': Year of publication, and '''month''': Name of the month of publication. If you also have the day, use ''date'' instead. Must not be wikilinked. * '''format''': Format, e.g. PDF. HTML implied if not specified. * '''work''': If this item is part of a larger work, name of that work. * '''publisher''': Publisher, if any. * '''pages''': ''pp. 5–7'': first page and optional last page. This is for listing the pages relevant to the citation, not the total number of pages in the book. This is especially useful for PDF format, where the page can be linked to with the <code>#page=''number''</code> anchor tagged on the end of the URL: *: <code><nowiki>pages = [http://www.example.org/file.pdf#page=123 p. 123]</nowiki></code> * '''language''': language of publication (don't specify "English" as this is the default). * '''archiveurl''': URL of the archive location of the item (requires '''archivedate''') * '''archivedate''': Date when the item was archived (requires '''archiveurl'''), in [[Wikipedia:ISO 8601|ISO 8601]] YYYY-MM-DD format, e.g. ''2006-02-17''. Must not be wikilinked; it will be linked automatically. * '''quote''': Relevant quote from online item. == Examples == ;Some standard use cases * <nowiki>{{Cite web | author=Doe, John | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org | accessdate=2005-07-06 }}</span> * <nowiki>{{Cite web | author=Doe, John | title=My Favorite Things Part II | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org | accessdate=2005-07-06 }}</span> * <nowiki>{{Cite web | author=Doe, John | title=My Favorite Things Part II | date=2005-04-30 | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | date=2005-04-30 | url=http://www.example.org | accessdate=2005-07-06}}</span> * <nowiki>{{Cite web | author=Doe, John | title=My Favorite Things Part II | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | url=http://www.example.org | accessdate=2005-07-06}}</span> * <nowiki>{{Cite web | title=My Favorite Things Part II | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | url=http://www.example.org | accessdate=2005-07-06}}</span> * <nowiki>{{Cite web | url=http://www.nfl.com/fans/ | title=Digest of Rules | publisher= National Football League | accessdate=2005-07-06 }}</nowiki><br>→ <span style="background:white">{{cite web | url=http://www.nfl.com/fans/ | title=Digest of Rules | publisher= National Football League | accessdate=2005-07-06 }}</span> ;Non-linking date of retrieval (using accessmonthday and accessyear) * <nowiki>{{Cite web | title=My Favorite Things Part II | work=Encyclopedia of Things | url=http://www.example.org/ | accessmonthday=July 6 | accessyear=2005 }}</nowiki><br/> → <span style="background:white">{{cite web | title=My Favorite Things Part II | work=Encyclopedia of Things | url=http://www.example.org/ | accessmonthday=July 6 | accessyear=2005 }}</span> ;Using format * <nowiki>{{Cite web | title=List of psychotropic substances under international control | publisher = International Narcotics Control Board | url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06 }}</nowiki><br/> → <span style="background:white">{{cite web | title=List of psychotropic substances under international control | publisher = International Narcotics Control Board | url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06}}</span> ;language * <nowiki>{{Cite web | author=Joliet, François | title=Honnit soit qui mal y pense | date=2005-04-30 | url=http://www.example.org/ | accessdate=2005-07-06 | language=French }}</nowiki><br/>→ <span style="background:white">{{cite web | author=Joliet, François | title=Honnit soit qui mal y pense | date=2005-04-30 | url=http://www.example.org | accessdate=2005-07-06 | language=French}}</span> ;coauthors * <nowiki>{{Cite web | first=John | last=Doe | coauthors=Peter Smith, Jim Smythe | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16 }}</nowiki><br/>→ <span style="background:white">{{cite web | first=John | last=Doe | coauthors=Peter Smith, Jim Smythe | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16 }}</span> ;No author * <nowiki>{{Cite web | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16 }}</nowiki><br/>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16 }}</span> ;No author, no publisher * <nowiki>{{Cite web | title=My Favorite Things Part II | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki></br>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2005-07-06 }}</span> * <nowiki>{{Cite web | title=My Favorite Things Part II | date=2005-04-30 | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | date=2005-04-30 | url=http://www.example.org/ | accessdate=2005-07-06 }}</span> * <nowiki>{{Cite web | title=List of psychotropic substances under international control | date=2005-04-30 | url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06 | language=Greek }}</nowiki><br/> → <span style="background:white">{{cite web | title=List of psychotropic substances under international control | date=2005-04-30 | url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06 | language=Greek }}</span> ; Using archiveurl and archivedate to refer to items that went away but are available from an archive site * <nowiki>{{Cite web | title=List of psychotropic substances under international control | date=2005-04-30 | url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06 | archiveurl=http://www.archive.org/2005-09-11/www.incb.org/pdf/e/list/green.pdf | archivedate=2005-09-11 }}</nowiki><br/> → <span style="background:white">{{cite web | title=List of psychotropic substances under international control | date=2005-04-30 | url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06 | archiveurl=http://www.archive.org/2005-09-11/www.incb.org/pdf/e/list/green.pdf | archivedate=2005-09-11 }}</span> * <nowiki> {{Cite web |url=http://joanjettbadrep.com/cgi-bin/fullStory.cgi?archive=currnews&story=20060405-01shore.htm |title=Interview with Maggie Downs |date=2006-03-31 |publisher=The Desert Sun |archiveurl=http://72.14.207.104/search?q=cache:JAxf4v-pQmgJ:joanjettbadrep.com/cgi-bin/fullStory.cgi%3Farchive%3Dcurrnews%26story%3D20060405-01shore.htm |archivedate=2006-04-26 }}</nowiki><br/> → <span style="background:white">{{cite web |url=http://joanjettbadrep.com/cgi-bin/fullStory.cgi?archive=currnews&story=20060405-01shore.htm |title=Interview with Maggie Downs |date=2006-03-31 |publisher=The Desert Sun |archiveurl=http://72.14.207.104/search?q=cache:JAxf4v-pQmgJ:joanjettbadrep.com/cgi-bin/fullStory.cgi%3Farchive%3Dcurrnews%26story%3D20060405-01shore.htm |archivedate=2006-04-26}}</span> ; Using quote * <nowiki>{{Cite web | title = My Favorite Things Part II | work = Encyclopedia of Things | url = http://www.example.org/ | accessdate = 2005-07-06 | quote = Lorem ipsum dolor. }}</nowiki><br/>→ <span style="background:white">{{cite web | title = My Favorite Things Part II | work = Encyclopedia of Things | url = http://www.example.org/ | accessdate = 2005-07-06 | quote = Lorem ipsum dolor. }}</span> ;No parameters (error) * <nowiki>{{Cite web}}</nowiki><br/>→ <span style="background:white">{{cite web}}</span> <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 49566b6a3601a57e7e4d3521179ec7d3300ec2a1 VAST SPACE ARCHIVES: Beeleth Wiki:Wiki rules 4 135 269 268 2022-11-10T22:18:00Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki Below is a suggested set of rules to follow when editing this wiki. Administrators of this wiki should read these rules and adapt them as necessary. # '''Keep it civil''': Do not make personal attacks on other people. If you need to criticize another user’s argument, do so without attacking them as a person. Do not use bigoted language, including slurs which degrade another person or group of people based on gender, race, sexual orientation, nationality, religion, etc. # '''Be a productive member of the wiki''': Contribute to the wiki in line with the established processes and conventions. Need help? Ask an [[Special:ListUsers/sysop|administrator]]! Disrupting the wiki with “edit warring” over differing opinions of a topic with another user or group of users is not productive. # '''Do not engage in excessive self-promotion''': The wiki is a collaborative community resource for the topic at hand. It is NOT a free place to advertise your related website, YouTube channel, blog, social media account, etc. Have a question about whether your link would be welcome? Ask an administrator! # '''Do not harass other users''': If somebody asks you to stop posting certain content on their wall, respect their wishes. It is their wall. # '''Do follow community guidelines for formatting''': When a community has established formatting, it’s important to adhere to that, especially when spoiler content is involved. [[Category:{{SITENAME}}]] efad0088b04516c5e666314530cc43875a74fd71 Blog:Recent posts 0 136 271 270 2022-11-10T22:18:01Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <bloglist summary="true" count=50><title>⧼create-blog-post-recent-listing-title ⧽</title><type>plain</type><order>date</order></bloglist> afb902f1d8c2d7adccbdd48b1fbd4a0cc5361783 Category:Blog posts 14 137 273 272 2022-11-10T22:18:01Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki This is an automatically generated list of blog posts [[Category:Community]] 864f70c2af84fd84c1901d154b90eb4facc9f37c Category:Community 14 138 275 274 2022-11-10T22:18:02Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki [[Category:{{SITENAME}}]] dd8aaa34cf600c1567d240a3f4bc615164a11592 Category:Pages with broken file links 14 139 277 276 2022-11-10T22:18:02Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki [[Category:Maintenance]] a106a39e26c77e7b2ec90cb83728a6446cb6a1a1 Category:Videos 14 140 279 278 2022-11-10T22:18:02Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki [[Category:Media]] b141d2b9971d6efe9f59bd03449781e71411c631 Category:Screenshots 14 141 281 280 2022-11-10T22:18:03Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki [[Category:Images]] 8820b63e35aedd9d2666fe40b965d4e91ce0a106 Category:Wiki skin images 14 142 283 282 2022-11-10T22:18:03Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki [[Category:Images]] 8820b63e35aedd9d2666fe40b965d4e91ce0a106 MediaWiki:Mainpage 8 143 285 284 2022-11-10T22:18:03Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki BEELETH Wiki 788e216c683159d2e7fb2731fdbe1c0517dc9321 Main Page 0 1 287 1 2022-11-10T22:18:04Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki __NOTOC__ == Welcome to {{SITENAME}}! == This Main Page was created automatically and it seems it hasn't been replaced yet. === For the bureaucrat(s) of this wiki === Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting. You can immediately start working on your wiki or whenever you want. Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links: * [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users) * [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]] * [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.) ==== I still don't understand X! ==== Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here: * [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]] * On [[phab:|Phabricator]] * On [https://miraheze.org/discord Discord] * On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat]) === For visitors of this wiki === Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later! 21236ac3f8d65e5563b6da6b70815ca6bf1e6616 File:Site-background-dark 6 144 289 288 2022-11-10T22:18:04Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Site-background-light 6 145 291 290 2022-11-10T22:18:05Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Site-logo.png 6 146 293 292 2022-11-10T22:18:06Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Site-favicon.ico 6 147 295 294 2022-11-10T22:18:06Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Template:General Character 10 148 297 296 2022-11-10T22:18:07Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <infobox> <title source="title1"/> <image source="image1"> <caption source="caption1"/> </image> <data source="real_name"> <label>Real name</label> </data> <data source="nickname(s)"> <label>Nickname(s)</label> </data> <data source="species"> <label>Species</label> </data> <data source="gender"> <label>Gender and pronouns</label> </data> <data source="orientation"> <label>Orientation</label> </data> <group collapse="open"> <header>Meta</header> <data source="creation_date"> <label>Creation date</label> </data> <data source="voice_claim"> <label>Voice(s)</label> </data> <data source="theme_song"> <label>Theme</label> </data> </group> <group collapse="open"> <header>In-Universe</header> <data source="universe"> <label>Universe</label> </data> <data source="classification"> <label>Classification</label> </data> <data source="birth"> <label>Birth</label> </data> <data source="residence"> <label>Residence</label> </data> <data source="relationships"> <label>Relationships</label> </data> <data source="title"> <label>Title</label> </data> <data source="rank"> <label>Rank</label> </data> <data source="sector"> <label>Sector</label> </data> <data source="affiliation"> <label>Affiliation</label> </data> </group> <group collapse="closed"> <header>Potential Spoilers</header> <data source="death"> <label>Death</label> </data> <data source="cause_of_death"> <label>Cause of death</label> </data> <data source="trace"> <label>Trace(s)</label> </data> <data source="wish"> <label>Wish</label> </data> <data source="kills"> <label>Kills</label> </data> </group> </infobox> <noinclude> Example usage: <pre> {{General Character | title1=Example | image1=Example | caption1=Example | real_name=Example | nickname(s)=Example | species=Example | gender=Example | orientation=Example | creation_date=Example | voice_claim=Example | theme_song=Example | universe=Example | classification=Example | birth=Example | residence=Example | relationships=Example | title=Example | rank=Example | sector=Example | affiliation=Example | death=Example | cause_of_death=Example | trace=Example | wish=Example | kills=Example }} </pre> <templatedata> {"params":{"title1":{"suggested":true},"image1":{"suggested":true},"caption1":{"suggested":true},"real_name":{"suggested":true},"nickname(s)":{"suggested":true},"species":{"suggested":true},"gender":{"suggested":true},"orientation":{"suggested":true},"creation_date":{"suggested":true},"voice_claim":{"suggested":true},"theme_song":{"suggested":true},"universe":{"suggested":true},"classification":{"suggested":true},"birth":{"suggested":true},"residence":{"suggested":true},"relationships":{"suggested":true},"title":{"suggested":true},"rank":{"suggested":true},"sector":{"suggested":true},"affiliation":{"suggested":true},"death":{"suggested":true},"cause_of_death":{"suggested":true},"trace":{"suggested":true},"wish":{"suggested":true},"kills":{"suggested":true}},"sets":[],"maps":{}} </templatedata> </noinclude> c1f275f04c540ee81c0c5638b5499bca4aa071ad BEELETH 0 149 299 298 2022-11-10T22:18:07Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{RealPerson}}{{General Character|caption1=Photo taken in 2021|birth=June 23|affiliation=|voice_claim=[https://www.youtube.com/watch?v=lpRbjrBKvME BEELETH]|nickname(s)=Beel<br> Euclid|gender=Epicene<br> * they/them * he/him * that one/that one's * no pronouns|title1=BEELETH|title=|species=Human (Filipino-American)|residence=United States|universe=Real World|image1=[[File:RealBEELETH.jpg|alt=Photograph of BEELETH]]|orientation=Unspecified|real_name=Ultimate Awesome Epic Guy 3: Deluxe Edition|relationships=* [https://coolpeoplw.fandom.com/wiki/Cam Cam] (partner) * [https://coolpeoplw.fandom.com/wiki/Rick Rick] (best friend) * [https://coolpeoplw.fandom.com/wiki/Chee Chee] (best friend) * [https://coolpeoplw.fandom.com/wiki/Izzy Izzy] (best friend)}} ''Not to be confused with [[King Beeleth]] from [[Pride of the Peacock Angel]].'' BEELETH is the real-world creator of the character universe detailed in this Wiki as well as the [[BEELETH Wiki]] itself. They are the main editor, but they're fine with others helping too. They have represented themselves (or at least certain aspects of themselves) through their work as various characters, including but not limited to [[Moss]] and [[King Beeleth]]. Almost all of their other characters also reflect something about them, their personality, their thoughts, and their experiences. == Inspiration == When creating new content, BEELETH takes inspiration from a variety of things, which includes childhood games, shows, and events. They may also take inspiration from current interests as well. Some of the inspirations that are most noticeable are Pokémon, Sonic the Hedgehog, and Klonoa. There are many other clear influences visible in different characters and their universes, but not frequent enough to be listed here. == Links == These pages are able to be used to find more first-hand information about BEELETH as well as their characters. * [https://beeleth.carrd.co/ Carrd] *[https://discord.gg/r9ZwNhV4rx Discord] * [https://www.roblox.com/users/30627566/profile Roblox] * [https://toyhou.se/BEELETH Toyhouse] * [https://twitter.com/itsbeeleth Twitter] [[Category:Real]] 9fd9a5393948fa30b90d91f6b839fd90216c8e78 File:RealBEELETH.jpg 6 150 301 300 2022-11-10T22:18:08Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki == Summary == REAL????? == Licensing == {{Self}} 9a923cc36699a221e4f3d827d811d18c0d13ba52 File:Mephistopheles.png 6 151 303 302 2022-11-10T22:18:09Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki == Summary == Mephistopheles' pose. == Licensing == {{Self}} 5478da25c043ac3e9f6284da73e6d5473627463f File:Beeleth.png 6 152 305 304 2022-11-10T22:18:09Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki == Summary == Beeleth's pose. == Licensing == {{Self}} 1dfbad80f58f8978af6540f16a2c0db8cfe711c8 King Beeleth 0 153 307 306 2022-11-10T22:18:11Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{General_Character|title1=King Beeleth|real_name=Beeleth<br> Cuperosa the Star-Crossed (formerly)|nickname(s)=Beel<br> Byleth<br> Beleth<br> Bileth|voice_claim=[https://youtu.be/4x40W0Pu3Fc Cecilia姉貴兄貴]|universe=[[Pride of the Peacock Angel]]|title=Hellish King of Love|affiliation=[[Lucifer's Rebellion]]|sector=Felis Sector|orientation=Panromantic asexual|kills=[[Galatea]]|image1=<gallery> Beelethv2wings.png|V2 Beelethv1wings.png|V1 Beelethmaidwings.png|Maid Beelethcasualwings.png|Casual </gallery>|caption1=Design as of 2021|theme_song=[https://youtu.be/LctLOhm2CqU john - 宴]|classification=|birth=First Angel Wave|species=[[Abstract angel|Cherub]] (formerly)<br> [[Abstract demon|Fallen cherub]]|gender=Unspecified<br> <small>• he/him<br> • they/them</small>|residence=[[Heaven]] (formerly)<br> [[Hell]]|relationships=[[Galatea]] (lover)<br> [[Emperor Satan]] (leader)<br> [[Prince Sytri]] (like a son)<br>}} ''Not to be confused with [[BEELETH]], King Beeleth's real-world creator.'' {{Quote|quote=Please... leave me alone.|speaker=Beeleth}} '''King Beeleth''' is one of several Hellish Kings designated by [[Satan]] himself, and he resides over the Felis sector in [[Hell]] along with his subordinates. Much like [[King Bael]], he is known for being miserable; however, he is also known to be cruel but pacifist, which is a strange combination. He is often in hiding to avoid speaking to others. In the list of all [[Pride of the Peacock Angel]] demons, he is the 13<sup>th</sup> total. Prior to [[Lucifer's Rebellion]] in [[Heaven]], he was known as Cuperosa the Star-Crossed and was somewhat kinder because his lover, [[Galatea]], was still alive; however, he was overly possessive of her and was often aggressive to others because of his fear of losing her. == Story == [[File:Cuperosa.png|alt=Cuperosa|left|250x250px|Cuperosa]] === Heaven === Cuperosa was created by [[Kyrie]] during the first wave of angels to represent and protect the very concept of true love. However, he was largely inactive during this period because he did not have anyone to truly love himself; as well as this, most other angels weren't interested in romance among themselves. One of the only other angels he would talk to about such things was [[Lucifer the Morning Star]], who had one-sided but intense feelings towards Kyrie that he could not discuss with others. He was also given a sentient [[Unicorns|divine steed]], [[Duke Amdusias|Amalthyne the Faithful]], which was to always obey him. The two of them were quite friendly and formed a significant trust between one another. One of the only other angels he would speak to was [[Queen Paimonia|Azazel the Watcher]], who provided infinite wisdom to their fellow angels and was comforting to be around. During the Second Angel Wave, many more angels of different types were created for different purposes. Among these angels was the archangel Galatea, who was (not known to those other than Kyrie) created to help serve and guide the creations yet to come. Beeleth fell for her instantly and would never leave her alone, but she found his company quite enjoyable and they quite quickly became partners. === Unrest and Rebellion === When the first [[humans]] were created from Earth's soil, most angels were happy and in awe of Kyrie's power. Others responded in secret with confusion and fear that they wouldn't be loved by Kyrie once more humans were created. These angels would join forces with Lucifer to form a [[Lucifer's Rebellion|rebellion]] against their creator in order to be the only creations remaining in His focus. Beeleth was not heavily involved in pre-war plans, and actually didn't anticipate the rebellion to become a full-on war at all. However, there was some tension between he and Galatea because of their differing opinions over the creation of humans and the future of the divine; he believed they were at risk of losing Kyrie's care, but she believed that they would all be loved equally in the end. Despite this, she promised to not let anyone dangerous find out about the rebellion's plans. ==== Death of Galatea ==== agagag === Fall from Heaven === sgsgs === fafafa === epic == Personality == stuff is here == Abilities == # '''Speaking Cacophonic and other languages:''' Since he is a fallen angel, he naturally speaks Cacophonic, which is the language of demons. As well as that, he is able to understand all other mortal languages and respond in them even if he doesn't recognize he is speaking in it. As for reading, it depends on the language. # '''Communicating to cats:''' Since he is a cat demon, he can understand and communicate with them. He and Sytri understand each other more than they are aware, which makes it hard for them to hide things. #* Some of his senses are also heightened. He can see better in the dark, smell more things, hear better, and sense things. However, he has a slightly worse sense of taste than normal demons. # Reshaping energy: wip i dont feel like writing rn # '''Retracting/moving horns, ears, wings, and tail:''' He is capable of retracting and changing the placement of some of his limbs, but rarely does it because he thinks it's silly and generally useless. This is connected to his shapeshifting ability in that if he doesn't pay enough attention, he will return to normal or regain some of his regular physical traits. # '''Psychokinesis on mortals and normal objects:''' If they are within his range, he can physically influence the things and people around him as long as they are mortals or objects without any special qualities that would prevent him from doing so. # '''Shapeshifting:''' Beeleth is able to switch between his normal form, a human form, and a cat form as he pleases. However, he does not like being belittled by others, so he often remains in his regular form. #* As a human, he goes by the name _. #* As a cat, he goes by the name _. # '''Entering blind rage:''' If he sees, experiences, or vividly remembers violence, he will enter a period of blind and violent rage that brings him physical pain and increases his physical and demonic strength exponentially. He will change out of any non-demonic form that he is currently in whenever he enters his rage state. #* In order to exit his rage state, he must calm down and/or run out of energy. It takes him a much longer time than his regular state to run out of energy completely, so depending on the situation, it might be easier to calm him down. However, it may be hard to calm him down during his rage state. # '''Altering personal bonds:''' He can change the way people feel about each other, which includes friendship, love, and many other types of feelings. He cannot use these powers on himself, deities, or other demons of rank. He is capable of combining this power with his energy-reshaping ability, which allows him to use energy projectiles as vessels for his bonding ability; this also works on regular weapons and projectiles. == Relationships == === Satan === Although they were once close, they have become more distant partially due to the rebellion's failure as well as Satan's physical condition following the fall from Heaven. === Kyrie === Beeleth views Kyrie as cruel. === Amdusias === Beeleth has become annoyed at Amdusias because of his current behavior and intentionally annoying nature. === Sytri === Beeleth cares for Sytri in an almost fatherly way, but is afraid to admit it because he worries that he will hurt the ones he loves. === Galatea === He feels immense guilt over the death of Galatea because he never thought that they would one day be apart, especially at his own hand. He still has periods of obsessive remorse related to the incident, and will lock himself away during them due to the intense feelings of violence and pain he gets during them. == Gallery == <gallery> File:Beelref.png|2021 reference sheet File:Beeleth.png|Full-body transparent image from 2021 reference sheet File:Beelcool.png|In combat using his energy reshaping ability </gallery> == Trivia == * Beeleth was originally made as BEELETH's booksona sometime before 2018 and was heavily inspired by Beleth from Floraverse, but was changed over time to be more personal and distinct. ** He is named Beeleth rather than Beleth solely because of Bee Movie jokes. * Cuperosa was designed to have his wings resemble broken hearts, and Beeleth's horns are meant to resemble a heart if his left horn is not broken. * His 2021 incarnation is based on his 2020 incarnation. ** That incarnation was based on the secondary form of his 2018-2019 incarnation. * He does not have a canon gender, but has canon pronouns. == Related Pages == * [[King]], his alternate incarnation in Art Portfolio Art Academy [[Category:Pride of the Peacock Angel]] [[Category:Characters]] [[Category:LGBT+ Characters]] [[Category:Neurodivergent Characters]] [[Category:Fallen Angels]] [[Category:Abstract Demons]] [[Category:Iconic Characters]] [[Category:Shapeshifters]] 57c5fe738d44c42382bde0bbc51b1feb86ceecb4 Lucifer the Morning Star 0 154 309 308 2022-11-10T22:18:11Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki #REDIRECT [[Emperor Satan]] 6be8eff933204ba1a16a150b699f234f34125df0 Satan 0 155 311 310 2022-11-10T22:18:11Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki #REDIRECT [[Emperor Satan]] 6be8eff933204ba1a16a150b699f234f34125df0 Emperor Satan 0 156 313 312 2022-11-10T22:18:12Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{General_Character|gender=Cisgender<br> <small>• he/him</small>|birth=First Angel Wave|real_name=Satan<br> Lucifer the Morning Star (formerly)|title1=Emperor Satan|species=Fallen seraph|theme_song=[https://www.youtube.com/watch?v=hPMnIymc3Cs Lemon Demon - Spiral of Ants]|caption1=Design as of 2021|orientation=Gay|universe=[[Pride of the Peacock Angel]]|residence=[[Lemegeton]]|title=Hellish Emperor of Fallen Stars|sector=Raven Sector|image1=[[Satan.png]]|affiliation=[[Lucifer's Rebellion]]|voice_claim=[https://www.youtube.com/watch?v=ETEg-SB01QY Andrew VanWyngarden]|nickname(s)=Luci<br> Fern<br> The Devil<br>|relationships=[[Kyrie]] <small>(crush)</small><br>[[Great Prince Mephistopheles|Mephistopheles]] <small>(spawn)</small><br>[[Great Prince Pruflas|Pruflas]] <small>(spawn)</small><br>[[Great Prince Beelzebub|Beelzebub]] <small>(spawn)</small>}}''Not to be confused with [[Great Prince Beelzebub]].'' Emperor Satan is the ruler of the entirety of [[Hell]], residing in the Raven sector which contains the capital, [[Lemegeton]]. His only subordinates who he actively works with as Hellish Emperor are the three Great Princes: [[Great Prince Beelzebub|Beelzebub]], [[Great Prince Pruflas|Pruflas]], and [[Great Prince Mephistopheles|Mephistopheles]]. He was formerly known as Lucifer the Morning Star, the brightest star in [[Heaven]] under [[Kyrie]] until he was banished and turned into a fallen [[Abstract angels|angel]] following a [[Lucifer's Rebellion|rebellion]] he led. He has strong one-sided feelings towards Kyrie. == Story == === Heaven === a === Unrest and Rebellion === a === Fall from Heaven === a == Personality == a == Abilities == # '''Speaking Cacophonic and other languages:''' Since he is a fallen angel, he naturally speaks [[Cacophonic]], which is the language of demons. As well as that, he is able to understand all other [[Mortals|mortal]] languages and respond in them even if he doesn't recognize he is speaking in it. #* Like [[Duchess Astaroeth]], he is able to read and write all languages as long as it was not written directly by a divine being. # '''Communicating to animals:''' He can understand and communicate with all animals. He is most like a goat, so he understands goats the best and vice versa. His second best "animal language" is that of snakes. # '''Flight and levitation:''' Satan is able to fly and levitate. He does not need his wings to levitate, but they help him fly and glide. Flight takes more energy than levitation, so he avoids doing it whenever possible; however, it is faster than most other means of transportation he can provide himself. # '''Using minimal teleportation:''' By thinking about a nearby location, he can reach it near-instantly as long as he can fit himself there. He can chain teleportation to go further than he would with just one attempt. # '''Melting and shapeshifting:''' He is naturally always fluid-like, as he is composed mostly of Abstract substance. He can become more liquid at will and, along with that, change his shape easily. He is completely reshapable, and if this power is combined with his ability to manipulate light, he can appear exactly as he pleases at any time. He can compress or expand himself to appear smaller or larger respectively, but he cannot become too large or else he will be weaker. # Harvesting souls: # '''Mimicking:''' He can mimic sounds, music, and voices as long as he is familiar with how they sound. He can do so with things he hasn't heard personally before if he has access to memories of it. # Manipulating sound: # '''Manipulating light:''' Since Abstract angels are personified stars and he is what remains of one, he can manipulate light and create illusions. The blue and white parts of his body are made of light, so he can change them as he wishes. #* He can completely and utterly disregard physics and turn light into weapons, tools, or whatever else he pleases. He often uses his halo for this. # Summoning/creating demons and familiars: # '''Using advanced psychokinesis:''' He can manipulate objects, people, and certain elements (see 14-17 for more information) easily by gesturing or thinking about it. His range is much larger than a regular psychokinetic demon, and encompasses the entirety of Hell and even further beyond it. In order to affect something, he must be aware of it; he does not need to know its current whereabouts to do so. He can affect the inside and outside of whatever he is manipulating. He has no actual limit on how many things he can affect at once. #* If he really wishes, he can use his powers to shred apart the internal organs of the entire population of a large city and kill them all, and there would be no way to know it was him. However, there are better things to do than that, and he knows it. # '''Using advanced possession:''' He is capable of possessing most if not all vessels, even if they are already being controlled by someone else (including natural bodies). Most of the time, unless he makes a mental or physical disruption, it's often impossible to tell someone has been possessed by him, even to the controller of the vessel. It's possible for him to sit in the "background" or take over the body completely. #* Though he was initially forced out of his body and into a noncorporeal form from the impact of the fall, his body and soul are somewhat conjoined nowadays in a sense. If he is removed from a body he is possessing by force and it is not his own, he will likely appear physically rather than spiritually. #* Astaroeth created a vessel, [[Zenko]], mainly for Satan's use but also for any demons who aren't capable of advanced possession, as Zenko's soul is incomplete and seeks certain types of souls to complete it. # '''Using advanced telepathy:''' By focusing on a person or group of people, he is able to infiltrate their mind and access most if not all of their thoughts and memories; he can also plant his own thoughts and memories within the front of their mind or the deepest recesses of it. Along with this, he can erase thoughts and memories. He is also able to create one-way or two-way communication channels carried by thoughts. #* He is immune to most other telepathy unless it is being carried out via a particularly powerful telepath or just someone/something more powerful than him in general. #* He is able to use these powers for hypnosis and brainwashing purposes, and it is much, much easier than doing so without powers. # Using cryomancy: # Using aquamancy: # Using geomancy: # Using pyromancy: # '''Entering homeostasis:''' Though it can be considered a weakness, Satan can enter homeostasis if he is overwhelmed or needs to recharge/retain energy. While in this state, he often creates a near-impenetrable highly compressed shield of Abstract susbstance around himself and allows his light to freely shape itself within the shield. If he enters this state out of his free will, he is likely able to exit it as he wishes; if he is forced to take this state, he will remain in it until his body is recharged. #* It's nearly impossible to force him out of homeostasis unless he wishes for it. #* Upon the impact of his fall from heaven, he entered a homeostasis-like state, albeit without his soul intact. The only difference is that he was unable to retain his ice powers and he slowly froze the crater he created. He remained like this for several hundreds of years. == Relationships == === Kyrie === abfasjkhjgabbgnjsk === Great Princes === The Great Princes are considered to be Satan's sons, but they are technically unrelated aside from being created as a result of his emotions reacting to Abstract substance at the time of his impact on Earth. His view of each of the princes varies, since they're based on different aspects of him and remind him of different people. ==== Mephistopheles ==== agoashgau ==== Pruflas ==== ashguofassafisanfas ==== Beelzebub ==== aiugsbohisnafaijfns === Underlings === Since he is the ruler of the entirety of Hell and oversees most legal activity within it, he has met most demons since those who have a position of any sort work for him. He has known most of the highest-ranking demons for the longest, as many of them were once angels like he was. == Trivia == * Following King Beeleth, he was the second Pride of the Peacock Angel character ever created. They initially had a more personal relationship, with Beeleth being one of his direct subordinates rather than governing another circle of Hell away from him. *His first design was more visually ice-related and didn't have Abstract substance because it didn't exist at the time of his actual creation. == Related Pages == * [[Lucifer's Rebellion]], a major historical/plot event in [[Pride of the Peacock Angel]] *[[Lemegeton]], the capital of Hell [[Category:Pride of the Peacock Angel]] [[Category:Characters]] [[Category:LGBT+ Characters]] [[Category:Neurodivergent Characters]] [[Category:Fallen Angels]] [[Category:Abstract Demons]] [[Category:Shapeshifters]] [[Category:Iconic Characters]] 90b553a3a03778b3575704422e67d47bac323770 Lucifer 0 157 315 314 2022-11-10T22:18:12Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki #REDIRECT [[Emperor Satan]] 6be8eff933204ba1a16a150b699f234f34125df0 Hell 0 158 317 316 2022-11-10T22:18:12Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki {{General Location|title1=Hell|universe=[[Pride of the Peacock Angel]]|location=[[Earth_(PotPA)|Earth]]|capital=Lemegeton|founder=[[Emperor Satan]]|leader=[[Emperor Satan]]|creation=Post-Rebellion|population=Undefined|notable_people=[[Emperor Satan]]}} Hell is the place that was created directly as a result of [[Lucifer's Rebellion]] falling from [[Heaven]], and it was originally a large crater caused by the impact of [[Emperor Satan|Satan]]'s fall. It was later turned into an entire city split into sectors ruled by kings and queens under Satan's rule. == Lemegeton == hello [[Category:Location]] [[Category:Abstract Space]] [[Category:Pride of the Peacock Angel]] c389d026ba84809649976e3df1fc3f73453ea702 Template:General Location 10 159 319 318 2022-11-10T22:18:13Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki <infobox> <title source="title1"/> <image source="image1"> <caption source="caption1"/> </image> <data source="universe"> <label>Universe</label> </data> <data source="location"> <label>Location</label> </data> <data source="capital"> <label>Capital</label> </data> <data source="sector"> <label>Sector</label> </data> <group> <header>In-Universe</header> <data source="founder"> <label>Founder</label> </data> <data source="leader"> <label>Leader</label> </data> <data source="creation"> <label>Creation</label> </data> <data source="population"> <label>Population</label> </data> <data source="notable_people"> <label>Notable People</label> </data> </group> </infobox> <noinclude> Example usage: <pre> {{General Location | title1=Example | image1=Example | caption1=Example | universe=Example | location=Example | capital=Example | sector=Example | founder=Example | leader=Example | creation=Example | population=Example | notable_people=Example }} </pre> <templatedata> {"params":{"title1":{"suggested":true},"image1":{"suggested":true},"caption1":{"suggested":true},"universe":{"suggested":true},"location":{"suggested":true},"capital":{"suggested":true},"sector":{"suggested":true},"founder":{"suggested":true},"leader":{"suggested":true},"creation":{"suggested":true},"population":{"suggested":true},"notable_people":{"suggested":true}},"sets":[],"maps":{}} </templatedata> </noinclude> 89aa34d77ed89da199f5ef3dc305d38ed3c7f064 Cuperosa the Star-Crossed 0 160 321 320 2022-11-10T22:18:13Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki #REDIRECT [[King Beeleth]] 9bfa365dd4a5e6fe3d7ed91e668364015e9141e2 Cuperosa 0 161 323 322 2022-11-10T22:18:14Z BEELETH 2 1 revision imported: Import from Fandom wikitext text/x-wiki #REDIRECT [[King Beeleth]] 9bfa365dd4a5e6fe3d7ed91e668364015e9141e2 Module:Transclusion count 828 223 445 2022-11-11T07:41:32Z beeleth>Aidan9382 0 Remove any Template: namespace designation from the demo arg Scribunto text/plain local p = {} function p.fetch(frame) local template = nil local return_value = nil -- Use demo parameter if it exists, otherswise use current template name local namespace = mw.title.getCurrentTitle().namespace if frame.args["demo"] and frame.args["demo"] ~= "" then template = mw.ustring.gsub(frame.args["demo"],"^[Tt]emplate:","") elseif namespace == 10 then -- Template namespace template = mw.title.getCurrentTitle().text elseif namespace == 828 then -- Module namespace template = (mw.site.namespaces[828].name .. ":" .. mw.title.getCurrentTitle().text) end -- If in template or module namespace, look up count in /data if template ~= nil then namespace = mw.title.new(template, "Template").namespace if namespace == 10 or namespace == 828 then template = mw.ustring.gsub(template, "/doc$", "") -- strip /doc from end template = mw.ustring.gsub(template, "/sandbox$", "") -- strip /sandbox from end local index = mw.ustring.sub(mw.title.new(template).text,1,1) local status, data = pcall(function () return(mw.loadData('Module:Transclusion_count/data/' .. (mw.ustring.find(index, "%a") and index or "other"))) end) if status then return_value = tonumber(data[mw.ustring.gsub(template, " ", "_")]) end end end -- If database value doesn't exist, use value passed to template if return_value == nil and frame.args[1] ~= nil then local arg1=mw.ustring.match(frame.args[1], '[%d,]+') if arg1 and arg1 ~= '' then return_value = tonumber(frame:callParserFunction('formatnum', arg1, 'R')) end end return return_value end -- Tabulate this data for [[Wikipedia:Database reports/Templates transcluded on the most pages]] function p.tabulate(frame) local list = {} for i = 65, 91 do local data = mw.loadData('Module:Transclusion count/data/' .. ((i == 91) and 'other' or string.char(i))) for name, count in pairs(data) do table.insert(list, {mw.title.new(name, "Template").fullText, count}) end end table.sort(list, function(a, b) return (a[2] == b[2]) and (a[1] < b[1]) or (a[2] > b[2]) end) local lang = mw.getContentLanguage(); for i = 1, #list do list[i] = ('|-\n| %d || [[%s]] || %s\n'):format(i, list[i][1]:gsub('_', ' '), lang:formatNum(list[i][2])) end return table.concat(list) end return p 000ef6bcbf7b66e727870b0c300c4009da300513 Template:Plainlist/styles.css 10 243 485 2022-12-11T06:59:53Z beeleth>Izno 0 add this reset from mobile.css text text/plain /* {{pp-template|small=yes}} */ .plainlist ol, .plainlist ul { line-height: inherit; list-style: none; margin: 0; padding: 0; /* Reset Minerva default */ } .plainlist ol li, .plainlist ul li { margin-bottom: 0; } 51706efa229ff8794c0d94f260a208e7c5e6ec30 Template:Hlist/styles.css 10 233 465 2022-12-26T18:00:17Z beeleth>Izno 0 actually remove that block, someone can dig for authorship text text/plain /* {{pp-protected|reason=match parent|small=yes}} */ /* * hlist styles are defined in core and Minerva and differ in Minerva. The * current definitions here (2023-01-01) are sufficient to override Minerva * without use of the hlist-separated class. The most problematic styles were * related to margin, padding, and the bullet. Check files listed at * [[MediaWiki talk:Common.css/to do#hlist-separated]] */ /* * TODO: When the majority of readership supports it (or some beautiful world * in which grade C support is above the minimum threshold), use :is() */ .hlist dl, .hlist ol, .hlist ul { margin: 0; padding: 0; } /* Display list items inline */ .hlist dd, .hlist dt, .hlist li { /* * don't trust the note that says margin doesn't work with inline * removing margin: 0 makes dds have margins again * We also want to reset margin-right in Minerva */ margin: 0; display: inline; } /* Display requested top-level lists inline */ .hlist.inline, .hlist.inline dl, .hlist.inline ol, .hlist.inline ul, /* Display nested lists inline */ .hlist dl dl, .hlist dl ol, .hlist dl ul, .hlist ol dl, .hlist ol ol, .hlist ol ul, .hlist ul dl, .hlist ul ol, .hlist ul ul { display: inline; } /* Hide empty list items */ .hlist .mw-empty-li { display: none; } /* TODO: :not() can maybe be used here to remove the later rule. naive test * seems to work. more testing needed. like so: *.hlist dt:not(:last-child)::after { * content: ": "; *} *.hlist dd:not(:last-child)::after, *.hlist li:not(:last-child)::after { * content: " · "; * font-weight: bold; *} */ /* Generate interpuncts */ .hlist dt::after { content: ": "; } .hlist dd::after, .hlist li::after { content: " · "; font-weight: bold; } .hlist dd:last-child::after, .hlist dt:last-child::after, .hlist li:last-child::after { content: none; } /* Add parentheses around nested lists */ .hlist dd dd:first-child::before, .hlist dd dt:first-child::before, .hlist dd li:first-child::before, .hlist dt dd:first-child::before, .hlist dt dt:first-child::before, .hlist dt li:first-child::before, .hlist li dd:first-child::before, .hlist li dt:first-child::before, .hlist li li:first-child::before { content: " ("; font-weight: normal; } .hlist dd dd:last-child::after, .hlist dd dt:last-child::after, .hlist dd li:last-child::after, .hlist dt dd:last-child::after, .hlist dt dt:last-child::after, .hlist dt li:last-child::after, .hlist li dd:last-child::after, .hlist li dt:last-child::after, .hlist li li:last-child::after { content: ")"; font-weight: normal; } /* Put ordinals in front of ordered list items */ .hlist ol { counter-reset: listitem; } .hlist ol > li { counter-increment: listitem; } .hlist ol > li::before { content: " " counter(listitem) "\a0"; } .hlist dd ol > li:first-child::before, .hlist dt ol > li:first-child::before, .hlist li ol > li:first-child::before { content: " (" counter(listitem) "\a0"; } 8c9dd9c9c00f30eead17fe10f51d183333e81f33 Module:Infobox 828 170 333 2022-12-27T21:29:12Z beeleth>Izno 0 merge hlist here Scribunto text/plain local p = {} local args = {} local origArgs = {} local root local empty_row_categories = {} local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]' local has_rows = false local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = 'Plainlist/styles.css' }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = 'Hlist/styles.css' } } local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for _, arg in pairs(args_to_check) do for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end if list.found then break end end end end end local function fixChildBoxes(sval, tt) local function notempty( s ) return s and s:match( '%S' ) end if notempty(sval) then local marker = '<span class=special_infobox_marker>' local s = sval -- start moving templatestyles and categories inside of table rows local slast = '' while slast ~= s do slast = s s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])', '%2%1') s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1') end -- end moving templatestyles and categories inside of table rows s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1') s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker) if s:match(marker) then s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '') s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1') s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1') s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1') end if s:match(marker) then local subcells = mw.text.split(s, marker) s = '' for k = 1, #subcells do if k == 1 then s = s .. subcells[k] .. '</' .. tt .. '></tr>' elseif k == #subcells then local rowstyle = ' style="display:none"' if notempty(subcells[k]) then rowstyle = '' end s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' .. subcells[k] elseif notempty(subcells[k]) then if (k % 2) == 0 then s = s .. subcells[k] else s = s .. '<tr><' .. tt .. ' colspan=2>\n' .. subcells[k] .. '</' .. tt .. '></tr>' end end end end -- the next two lines add a newline at the end of lists for the PHP parser -- [[Special:Diff/849054481]] -- remove when [[:phab:T191516]] is fixed or OBE s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1') s = mw.ustring.gsub(s, '^(%{%|)', '\n%1') return s else return sval end end -- Cleans empty tables local function cleanInfobox() root = tostring(root) if has_rows == false then root = mw.ustring.gsub(root, '<table[^<>]*>%s*</table>', '') end end -- Returns the union of the values of two tables, as a sequence. local function union(t1, t2) local vals = {} for k, v in pairs(t1) do vals[v] = true end for k, v in pairs(t2) do vals[v] = true end local ret = {} for k, v in pairs(vals) do table.insert(ret, k) end return ret end -- Returns a table containing the numbers of the arguments that exist -- for the specified prefix. For example, if the prefix was 'data', and -- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}. local function getArgNums(prefix) local nums = {} for k, v in pairs(args) do local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -- Adds a row to the infobox, with either a header cell -- or a label/data cell combination. local function addRow(rowArgs) if rowArgs.header and rowArgs.header ~= '_BLANK_' then has_rows = true has_list_class({ rowArgs.rowclass, rowArgs.class, args.headerclass }) root :tag('tr') :addClass(rowArgs.rowclass) :cssText(rowArgs.rowstyle) :tag('th') :attr('colspan', '2') :addClass('infobox-header') :addClass(rowArgs.class) :addClass(args.headerclass) -- @deprecated next; target .infobox-<name> .infobox-header :cssText(args.headerstyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.header, 'th')) if rowArgs.data then root:wikitext( '[[Category:Pages using infobox templates with ignored data cells]]' ) end elseif rowArgs.data and rowArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ rowArgs.rowclass, rowArgs.class }) local row = root:tag('tr') row:addClass(rowArgs.rowclass) row:cssText(rowArgs.rowstyle) if rowArgs.label then row :tag('th') :attr('scope', 'row') :addClass('infobox-label') -- @deprecated next; target .infobox-<name> .infobox-label :cssText(args.labelstyle) :cssText(rowArgs.rowcellstyle) :wikitext(rowArgs.label) :done() end local dataCell = row:tag('td') dataCell :attr('colspan', not rowArgs.label and '2' or nil) :addClass(not rowArgs.label and 'infobox-full-data' or 'infobox-data') :addClass(rowArgs.class) -- @deprecated next; target .infobox-<name> .infobox(-full)-data :cssText(rowArgs.datastyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.data, 'td')) else table.insert(empty_row_categories, rowArgs.data or '') end end local function renderTitle() if not args.title then return end has_rows = true has_list_class({args.titleclass}) root :tag('caption') :addClass('infobox-title') :addClass(args.titleclass) -- @deprecated next; target .infobox-<name> .infobox-title :cssText(args.titlestyle) :wikitext(args.title) end local function renderAboveRow() if not args.above then return end has_rows = true has_list_class({ args.aboveclass }) root :tag('tr') :tag('th') :attr('colspan', '2') :addClass('infobox-above') :addClass(args.aboveclass) -- @deprecated next; target .infobox-<name> .infobox-above :cssText(args.abovestyle) :wikitext(fixChildBoxes(args.above,'th')) end local function renderBelowRow() if not args.below then return end has_rows = true has_list_class({ args.belowclass }) root :tag('tr') :tag('td') :attr('colspan', '2') :addClass('infobox-below') :addClass(args.belowclass) -- @deprecated next; target .infobox-<name> .infobox-below :cssText(args.belowstyle) :wikitext(fixChildBoxes(args.below,'td')) end local function addSubheaderRow(subheaderArgs) if subheaderArgs.data and subheaderArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ subheaderArgs.rowclass, subheaderArgs.class }) local row = root:tag('tr') row:addClass(subheaderArgs.rowclass) local dataCell = row:tag('td') dataCell :attr('colspan', '2') :addClass('infobox-subheader') :addClass(subheaderArgs.class) :cssText(subheaderArgs.datastyle) :cssText(subheaderArgs.rowcellstyle) :wikitext(fixChildBoxes(subheaderArgs.data, 'td')) else table.insert(empty_row_categories, subheaderArgs.data or '') end end local function renderSubheaders() if args.subheader then args.subheader1 = args.subheader end if args.subheaderrowclass then args.subheaderrowclass1 = args.subheaderrowclass end local subheadernums = getArgNums('subheader') for k, num in ipairs(subheadernums) do addSubheaderRow({ data = args['subheader' .. tostring(num)], -- @deprecated next; target .infobox-<name> .infobox-subheader datastyle = args.subheaderstyle, rowcellstyle = args['subheaderstyle' .. tostring(num)], class = args.subheaderclass, rowclass = args['subheaderrowclass' .. tostring(num)] }) end end local function addImageRow(imageArgs) if imageArgs.data and imageArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ imageArgs.rowclass, imageArgs.class }) local row = root:tag('tr') row:addClass(imageArgs.rowclass) local dataCell = row:tag('td') dataCell :attr('colspan', '2') :addClass('infobox-image') :addClass(imageArgs.class) :cssText(imageArgs.datastyle) :wikitext(fixChildBoxes(imageArgs.data, 'td')) else table.insert(empty_row_categories, imageArgs.data or '') end end local function renderImages() if args.image then args.image1 = args.image end if args.caption then args.caption1 = args.caption end local imagenums = getArgNums('image') for k, num in ipairs(imagenums) do local caption = args['caption' .. tostring(num)] local data = mw.html.create():wikitext(args['image' .. tostring(num)]) if caption then data :tag('div') :addClass('infobox-caption') -- @deprecated next; target .infobox-<name> .infobox-caption :cssText(args.captionstyle) :wikitext(caption) end addImageRow({ data = tostring(data), -- @deprecated next; target .infobox-<name> .infobox-image datastyle = args.imagestyle, class = args.imageclass, rowclass = args['imagerowclass' .. tostring(num)] }) end end -- When autoheaders are turned on, preprocesses the rows local function preprocessRows() if not args.autoheaders then return end local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) local lastheader for k, num in ipairs(rownums) do if args['header' .. tostring(num)] then if lastheader then args['header' .. tostring(lastheader)] = nil end lastheader = num elseif args['data' .. tostring(num)] and args['data' .. tostring(num)]:gsub( category_in_empty_row_pattern, '' ):match('^%S') then local data = args['data' .. tostring(num)] if data:gsub(category_in_empty_row_pattern, ''):match('%S') then lastheader = nil end end end if lastheader then args['header' .. tostring(lastheader)] = nil end end -- Gets the union of the header and data argument numbers, -- and renders them all in order local function renderRows() local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) for k, num in ipairs(rownums) do addRow({ header = args['header' .. tostring(num)], label = args['label' .. tostring(num)], data = args['data' .. tostring(num)], datastyle = args.datastyle, class = args['class' .. tostring(num)], rowclass = args['rowclass' .. tostring(num)], -- @deprecated next; target .infobox-<name> rowclass rowstyle = args['rowstyle' .. tostring(num)], rowcellstyle = args['rowcellstyle' .. tostring(num)] }) end end local function renderNavBar() if not args.name then return end has_rows = true root :tag('tr') :tag('td') :attr('colspan', '2') :addClass('infobox-navbar') :wikitext(require('Module:Navbar')._navbar{ args.name, mini = 1, }) end local function renderItalicTitle() local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title']) if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then root:wikitext(require('Module:Italic title')._main({})) end end -- Categories in otherwise empty rows are collected in empty_row_categories. -- This function adds them to the module output. It is not affected by -- args.decat because this module should not prevent module-external categories -- from rendering. local function renderEmptyRowCategories() for _, s in ipairs(empty_row_categories) do root:wikitext(s) end end -- Render tracking categories. args.decat == turns off tracking categories. local function renderTrackingCategories() if args.decat == 'yes' then return end if args.child == 'yes' then if args.title then root:wikitext( '[[Category:Pages using embedded infobox templates with the title parameter]]' ) end elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then root:wikitext('[[Category:Articles using infobox templates with no data rows]]') end end --[=[ Loads the templatestyles for the infobox. TODO: FINISH loading base templatestyles here rather than in MediaWiki:Common.css. There are 4-5000 pages with 'raw' infobox tables. See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :). When we do this we should clean up the inline CSS below too. Will have to do some bizarre conversion category like with sidebar. ]=] local function loadTemplateStyles() local frame = mw.getCurrentFrame() local hlist_templatestyles = '' if lists.hlist_t.found then hlist_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = lists.hlist_t.styles } } end local plainlist_templatestyles = '' if lists.plainlist_t.found then plainlist_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = lists.plainlist_t.styles } } end -- See function description local base_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' } } local templatestyles = '' if args['templatestyles'] then templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['templatestyles'] } } end local child_templatestyles = '' if args['child templatestyles'] then child_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['child templatestyles'] } } end local grandchild_templatestyles = '' if args['grandchild templatestyles'] then grandchild_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['grandchild templatestyles'] } } end return table.concat({ -- hlist -> plainlist -> base is best-effort to preserve old Common.css ordering. -- this ordering is not a guarantee because the rows of interest invoking -- each class may not be on a specific page hlist_templatestyles, plainlist_templatestyles, base_templatestyles, templatestyles, child_templatestyles, grandchild_templatestyles }) end -- common functions between the child and non child cases local function structure_infobox_common() renderSubheaders() renderImages() preprocessRows() renderRows() renderBelowRow() renderNavBar() renderItalicTitle() renderEmptyRowCategories() renderTrackingCategories() cleanInfobox() end -- Specify the overall layout of the infobox, with special settings if the -- infobox is used as a 'child' inside another infobox. local function _infobox() if args.child ~= 'yes' then root = mw.html.create('table') root :addClass(args.subbox == 'yes' and 'infobox-subbox' or 'infobox') :addClass(args.bodyclass) -- @deprecated next; target .infobox-<name> :cssText(args.bodystyle) has_list_class({ args.bodyclass }) renderTitle() renderAboveRow() else root = mw.html.create() root :wikitext(args.title) end structure_infobox_common() return loadTemplateStyles() .. root end -- If the argument exists and isn't blank, add it to the argument table. -- Blank arguments are treated as nil to match the behaviour of ParserFunctions. local function preprocessSingleArg(argName) if origArgs[argName] and origArgs[argName] ~= '' then args[argName] = origArgs[argName] end end -- Assign the parameters with the given prefixes to the args table, in order, in -- batches of the step size specified. This is to prevent references etc. from -- appearing in the wrong order. The prefixTable should be an array containing -- tables, each of which has two possible fields, a "prefix" string and a -- "depend" table. The function always parses parameters containing the "prefix" -- string, but only parses parameters in the "depend" table if the prefix -- parameter is present and non-blank. local function preprocessArgs(prefixTable, step) if type(prefixTable) ~= 'table' then error("Non-table value detected for the prefix table", 2) end if type(step) ~= 'number' then error("Invalid step value detected", 2) end -- Get arguments without a number suffix, and check for bad input. for i,v in ipairs(prefixTable) do if type(v) ~= 'table' or type(v.prefix) ~= "string" or (v.depend and type(v.depend) ~= 'table') then error('Invalid input detected to preprocessArgs prefix table', 2) end preprocessSingleArg(v.prefix) -- Only parse the depend parameter if the prefix parameter is present -- and not blank. if args[v.prefix] and v.depend then for j, dependValue in ipairs(v.depend) do if type(dependValue) ~= 'string' then error('Invalid "depend" parameter value detected in preprocessArgs') end preprocessSingleArg(dependValue) end end end -- Get arguments with number suffixes. local a = 1 -- Counter variable. local moreArgumentsExist = true while moreArgumentsExist == true do moreArgumentsExist = false for i = a, a + step - 1 do for j,v in ipairs(prefixTable) do local prefixArgName = v.prefix .. tostring(i) if origArgs[prefixArgName] then -- Do another loop if any arguments are found, even blank ones. moreArgumentsExist = true preprocessSingleArg(prefixArgName) end -- Process the depend table if the prefix argument is present -- and not blank, or we are processing "prefix1" and "prefix" is -- present and not blank, and if the depend table is present. if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then for j,dependValue in ipairs(v.depend) do local dependArgName = dependValue .. tostring(i) preprocessSingleArg(dependArgName) end end end end a = a + step end end -- Parse the data parameters in the same order that the old {{infobox}} did, so -- that references etc. will display in the expected places. Parameters that -- depend on another parameter are only processed if that parameter is present, -- to avoid phantom references appearing in article reference lists. local function parseDataParameters() preprocessSingleArg('autoheaders') preprocessSingleArg('child') preprocessSingleArg('bodyclass') preprocessSingleArg('subbox') preprocessSingleArg('bodystyle') preprocessSingleArg('title') preprocessSingleArg('titleclass') preprocessSingleArg('titlestyle') preprocessSingleArg('above') preprocessSingleArg('aboveclass') preprocessSingleArg('abovestyle') preprocessArgs({ {prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}} }, 10) preprocessSingleArg('subheaderstyle') preprocessSingleArg('subheaderclass') preprocessArgs({ {prefix = 'image', depend = {'caption', 'imagerowclass'}} }, 10) preprocessSingleArg('captionstyle') preprocessSingleArg('imagestyle') preprocessSingleArg('imageclass') preprocessArgs({ {prefix = 'header'}, {prefix = 'data', depend = {'label'}}, {prefix = 'rowclass'}, {prefix = 'rowstyle'}, {prefix = 'rowcellstyle'}, {prefix = 'class'} }, 50) preprocessSingleArg('headerclass') preprocessSingleArg('headerstyle') preprocessSingleArg('labelstyle') preprocessSingleArg('datastyle') preprocessSingleArg('below') preprocessSingleArg('belowclass') preprocessSingleArg('belowstyle') preprocessSingleArg('name') -- different behaviour for italics if blank or absent args['italic title'] = origArgs['italic title'] preprocessSingleArg('decat') preprocessSingleArg('templatestyles') preprocessSingleArg('child templatestyles') preprocessSingleArg('grandchild templatestyles') end -- If called via #invoke, use the args passed into the invoking template. -- Otherwise, for testing purposes, assume args are being passed directly in. function p.infobox(frame) if frame == mw.getCurrentFrame() then origArgs = frame:getParent().args else origArgs = frame end parseDataParameters() return _infobox() end -- For calling via #invoke within a template function p.infoboxTemplate(frame) origArgs = {} for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end parseDataParameters() return _infobox() end return p 0ddb7e5c8426d67cd589b710efb9912ddfb67fea Module:Infobox/doc 828 242 483 2022-12-27T21:30:05Z beeleth>Izno 0 and now hlist wikitext text/x-wiki {{High-use|3308957|all-pages = yes}} {{module rating|protected}} {{Lua|Module:Navbar}} {{Uses TemplateStyles|Module:Infobox/styles.css|Template:Hlist/styles.css|Template:Plainlist/styles.css}} '''Module:Infobox''' is a [[WP:Module|module]] that implements the {{tl|Infobox}} template. Please see the template page for usage instructions. == Tracking categories == * {{clc|Pages using infobox templates with ignored data cells}} * {{clc|Articles using infobox templates with no data rows}} * {{clc|Pages using embedded infobox templates with the title parameter}} <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox|| [[Category:Modules that add a tracking category]] [[Category:Wikipedia infoboxes]] [[Category:Infobox modules]] [[Category:Modules that check for strip markers]] }}</includeonly> 5381394a0c0d893c8387fa699e9e185a298bd831 Module:List 828 184 361 2022-12-29T17:57:56Z beeleth>Izno 0 add templatestyles for hlist Scribunto text/plain local libUtil = require('libraryUtil') local checkType = libUtil.checkType local mTableTools = require('Module:TableTools') local p = {} local listTypes = { ['bulleted'] = true, ['unbulleted'] = true, ['horizontal'] = true, ['ordered'] = true, ['horizontal_ordered'] = true } function p.makeListData(listType, args) -- Constructs a data table to be passed to p.renderList. local data = {} -- Classes and TemplateStyles data.classes = {} data.templatestyles = '' if listType == 'horizontal' or listType == 'horizontal_ordered' then table.insert(data.classes, 'hlist') data.templatestyles = mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Hlist/styles.css' } } elseif listType == 'unbulleted' then table.insert(data.classes, 'plainlist') data.templatestyles = mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Plainlist/styles.css' } } end table.insert(data.classes, args.class) -- Main div style data.style = args.style -- Indent for horizontal lists if listType == 'horizontal' or listType == 'horizontal_ordered' then local indent = tonumber(args.indent) indent = indent and indent * 1.6 or 0 if indent > 0 then data.marginLeft = indent .. 'em' end end -- List style types for ordered lists -- This could be "1, 2, 3", "a, b, c", or a number of others. The list style -- type is either set by the "type" attribute or the "list-style-type" CSS -- property. if listType == 'ordered' or listType == 'horizontal_ordered' then data.listStyleType = args.list_style_type or args['list-style-type'] data.type = args['type'] -- Detect invalid type attributes and attempt to convert them to -- list-style-type CSS properties. if data.type and not data.listStyleType and not tostring(data.type):find('^%s*[1AaIi]%s*$') then data.listStyleType = data.type data.type = nil end end -- List tag type if listType == 'ordered' or listType == 'horizontal_ordered' then data.listTag = 'ol' else data.listTag = 'ul' end -- Start number for ordered lists data.start = args.start if listType == 'horizontal_ordered' then -- Apply fix to get start numbers working with horizontal ordered lists. local startNum = tonumber(data.start) if startNum then data.counterReset = 'listitem ' .. tostring(startNum - 1) end end -- List style -- ul_style and ol_style are included for backwards compatibility. No -- distinction is made for ordered or unordered lists. data.listStyle = args.list_style -- List items -- li_style is included for backwards compatibility. item_style was included -- to be easier to understand for non-coders. data.itemStyle = args.item_style or args.li_style data.items = {} for _, num in ipairs(mTableTools.numKeys(args)) do local item = {} item.content = args[num] item.style = args['item' .. tostring(num) .. '_style'] or args['item_style' .. tostring(num)] item.value = args['item' .. tostring(num) .. '_value'] or args['item_value' .. tostring(num)] table.insert(data.items, item) end return data end function p.renderList(data) -- Renders the list HTML. -- Return the blank string if there are no list items. if type(data.items) ~= 'table' or #data.items < 1 then return '' end -- Render the main div tag. local root = mw.html.create('div') for _, class in ipairs(data.classes or {}) do root:addClass(class) end root:css{['margin-left'] = data.marginLeft} if data.style then root:cssText(data.style) end -- Render the list tag. local list = root:tag(data.listTag or 'ul') list :attr{start = data.start, type = data.type} :css{ ['counter-reset'] = data.counterReset, ['list-style-type'] = data.listStyleType } if data.listStyle then list:cssText(data.listStyle) end -- Render the list items for _, t in ipairs(data.items or {}) do local item = list:tag('li') if data.itemStyle then item:cssText(data.itemStyle) end if t.style then item:cssText(t.style) end item :attr{value = t.value} :wikitext(t.content) end return data.templatestyles .. tostring(root) end function p.renderTrackingCategories(args) local isDeprecated = false -- Tracks deprecated parameters. for k, v in pairs(args) do k = tostring(k) if k:find('^item_style%d+$') or k:find('^item_value%d+$') then isDeprecated = true break end end local ret = '' if isDeprecated then ret = ret .. '[[Category:List templates with deprecated parameters]]' end return ret end function p.makeList(listType, args) if not listType or not listTypes[listType] then error(string.format( "bad argument #1 to 'makeList' ('%s' is not a valid list type)", tostring(listType) ), 2) end checkType('makeList', 2, args, 'table') local data = p.makeListData(listType, args) local list = p.renderList(data) local trackingCategories = p.renderTrackingCategories(args) return list .. trackingCategories end for listType in pairs(listTypes) do p[listType] = function (frame) local mArguments = require('Module:Arguments') local origArgs = mArguments.getArgs(frame, { valueFunc = function (key, value) if not value or not mw.ustring.find(value, '%S') then return nil end if mw.ustring.find(value, '^%s*[%*#;:]') then return value else return value:match('^%s*(.-)%s*$') end return nil end }) -- Copy all the arguments to a new table, for faster indexing. local args = {} for k, v in pairs(origArgs) do args[k] = v end return p.makeList(listType, args) end end return p 7a4f36a6e9cd56370bdd8207d23694124821dc1a 362 361 2023-01-16T18:15:30Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain local libUtil = require('libraryUtil') local checkType = libUtil.checkType local mTableTools = require('Module:TableTools') local p = {} local listTypes = { ['bulleted'] = true, ['unbulleted'] = true, ['horizontal'] = true, ['ordered'] = true, ['horizontal_ordered'] = true } function p.makeListData(listType, args) -- Constructs a data table to be passed to p.renderList. local data = {} -- Classes and TemplateStyles data.classes = {} data.templatestyles = '' if listType == 'horizontal' or listType == 'horizontal_ordered' then table.insert(data.classes, 'hlist') data.templatestyles = mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Hlist/styles.css' } } elseif listType == 'unbulleted' then table.insert(data.classes, 'plainlist') data.templatestyles = mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Plainlist/styles.css' } } end table.insert(data.classes, args.class) -- Main div style data.style = args.style -- Indent for horizontal lists if listType == 'horizontal' or listType == 'horizontal_ordered' then local indent = tonumber(args.indent) indent = indent and indent * 1.6 or 0 if indent > 0 then data.marginLeft = indent .. 'em' end end -- List style types for ordered lists -- This could be "1, 2, 3", "a, b, c", or a number of others. The list style -- type is either set by the "type" attribute or the "list-style-type" CSS -- property. if listType == 'ordered' or listType == 'horizontal_ordered' then data.listStyleType = args.list_style_type or args['list-style-type'] data.type = args['type'] -- Detect invalid type attributes and attempt to convert them to -- list-style-type CSS properties. if data.type and not data.listStyleType and not tostring(data.type):find('^%s*[1AaIi]%s*$') then data.listStyleType = data.type data.type = nil end end -- List tag type if listType == 'ordered' or listType == 'horizontal_ordered' then data.listTag = 'ol' else data.listTag = 'ul' end -- Start number for ordered lists data.start = args.start if listType == 'horizontal_ordered' then -- Apply fix to get start numbers working with horizontal ordered lists. local startNum = tonumber(data.start) if startNum then data.counterReset = 'listitem ' .. tostring(startNum - 1) end end -- List style -- ul_style and ol_style are included for backwards compatibility. No -- distinction is made for ordered or unordered lists. data.listStyle = args.list_style -- List items -- li_style is included for backwards compatibility. item_style was included -- to be easier to understand for non-coders. data.itemStyle = args.item_style or args.li_style data.items = {} for _, num in ipairs(mTableTools.numKeys(args)) do local item = {} item.content = args[num] item.style = args['item' .. tostring(num) .. '_style'] or args['item_style' .. tostring(num)] item.value = args['item' .. tostring(num) .. '_value'] or args['item_value' .. tostring(num)] table.insert(data.items, item) end return data end function p.renderList(data) -- Renders the list HTML. -- Return the blank string if there are no list items. if type(data.items) ~= 'table' or #data.items < 1 then return '' end -- Render the main div tag. local root = mw.html.create('div') for _, class in ipairs(data.classes or {}) do root:addClass(class) end root:css{['margin-left'] = data.marginLeft} if data.style then root:cssText(data.style) end -- Render the list tag. local list = root:tag(data.listTag or 'ul') list :attr{start = data.start, type = data.type} :css{ ['counter-reset'] = data.counterReset, ['list-style-type'] = data.listStyleType } if data.listStyle then list:cssText(data.listStyle) end -- Render the list items for _, t in ipairs(data.items or {}) do local item = list:tag('li') if data.itemStyle then item:cssText(data.itemStyle) end if t.style then item:cssText(t.style) end item :attr{value = t.value} :wikitext(t.content) end return data.templatestyles .. tostring(root) end function p.renderTrackingCategories(args) local isDeprecated = false -- Tracks deprecated parameters. for k, v in pairs(args) do k = tostring(k) if k:find('^item_style%d+$') or k:find('^item_value%d+$') then isDeprecated = true break end end local ret = '' if isDeprecated then ret = ret .. '[[Category:List templates with deprecated parameters]]' end return ret end function p.makeList(listType, args) if not listType or not listTypes[listType] then error(string.format( "bad argument #1 to 'makeList' ('%s' is not a valid list type)", tostring(listType) ), 2) end checkType('makeList', 2, args, 'table') local data = p.makeListData(listType, args) local list = p.renderList(data) local trackingCategories = p.renderTrackingCategories(args) return list .. trackingCategories end for listType in pairs(listTypes) do p[listType] = function (frame) local mArguments = require('Module:Arguments') local origArgs = mArguments.getArgs(frame, { valueFunc = function (key, value) if not value or not mw.ustring.find(value, '%S') then return nil end if mw.ustring.find(value, '^%s*[%*#;:]') then return value else return value:match('^%s*(.-)%s*$') end return nil end }) -- Copy all the arguments to a new table, for faster indexing. local args = {} for k, v in pairs(origArgs) do args[k] = v end return p.makeList(listType, args) end end return p 7a4f36a6e9cd56370bdd8207d23694124821dc1a Module:Sidebar 828 204 405 2022-12-29T18:01:03Z beeleth>Izno 0 add templatestyles for hlist Scribunto text/plain require('strict') local cfg = mw.loadData('Module:Sidebar/configuration') local p = {} local getArgs = require('Module:Arguments').getArgs --[[ Categorizes calling templates and modules with a 'style' parameter of any sort for tracking to convert to TemplateStyles. TODO after a long cleanup: Catch sidebars in other namespaces than Template and Module. TODO would probably want to remove /log and /archive as CS1 does ]] local function categorizeTemplatesWithInlineStyles(args) local title = mw.title.getCurrentTitle() if title.namespace ~= 10 and title.namespace ~= 828 then return '' end for _, pattern in ipairs (cfg.i18n.pattern.uncategorized_conversion_titles) do if title.text:match(pattern) then return '' end end for key, _ in pairs(args) do if mw.ustring.find(key, cfg.i18n.pattern.style_conversion) or key == 'width' then return cfg.i18n.category.conversion end end end --[[ For compatibility with the original {{sidebar with collapsible lists}} implementation, which passed some parameters through {{#if}} to trim their whitespace. This also triggered the automatic newline behavior. ]] -- See ([[meta:Help:Newlines and spaces#Automatic newline]]) local function trimAndAddAutomaticNewline(s) s = mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1") if mw.ustring.find(s, '^[#*:;]') or mw.ustring.find(s, '^{|') then return '\n' .. s else return s end end --[[ Finds whether a sidebar has a subgroup sidebar. ]] local function hasSubgroup(s) if mw.ustring.find(s, cfg.i18n.pattern.subgroup) then return true else return false end end local function has_navbar(navbar_mode, sidebar_name) return navbar_mode ~= cfg.i18n.navbar_none and navbar_mode ~= cfg.i18n.navbar_off and ( sidebar_name or mw.getCurrentFrame():getParent():getTitle():gsub(cfg.i18n.pattern.sandbox, '') ~= cfg.i18n.title_not_to_add_navbar ) end local function has_list_class(args, htmlclass) local patterns = { '^' .. htmlclass .. '$', '%s' .. htmlclass .. '$', '^' .. htmlclass .. '%s', '%s' .. htmlclass .. '%s' } for arg, value in pairs(args) do if type(arg) == 'string' and mw.ustring.find(arg, 'class') then for _, pattern in ipairs(patterns) do if mw.ustring.find(args[arg] or '', pattern) then return true end end end end return false end -- there are a lot of list classes in the wild, so we add their TemplateStyles local function add_list_styles(args) local frame = mw.getCurrentFrame() local function add_list_templatestyles(htmlclass, templatestyles) if has_list_class(args, htmlclass) then return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles } } else return '' end end local plainlist_styles = add_list_templatestyles('plainlist', 'Plainlist/styles.css') local hlist_styles = add_list_templatestyles('hlist', 'Hlist/styles.css') -- a second workaround for [[phab:T303378]] -- when that issue is fixed, we can actually use has_navbar not to emit the -- tag here if we want if has_navbar(args.navbar, args.name) and hlist_styles == '' then hlist_styles = frame:extensionTag{ name = 'templatestyles', args = { src = 'Hlist/styles.css' } } end -- hlist -> plainlist is best-effort to preserve old Common.css ordering. [hlist_note] return hlist_styles .. plainlist_styles end -- work around [[phab:T303378]] -- for each arg: find all the templatestyles strip markers, insert them into a -- table. then remove all templatestyles markers from the arg local function move_hiding_templatestyles(args) local gfind = string.gfind local gsub = string.gsub local templatestyles_markers = {} local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)' for k, arg in pairs(args) do for marker in gfind(arg, strip_marker_pattern) do table.insert(templatestyles_markers, marker) end args[k] = gsub(arg, strip_marker_pattern, '') end return templatestyles_markers end --[[ Main sidebar function. Takes the frame, args, and an optional collapsibleClass. The collapsibleClass is and should be used only for sidebars with collapsible lists, as in p.collapsible. ]] function p.sidebar(frame, args, collapsibleClass) if not args then args = getArgs(frame) end local hiding_templatestyles = table.concat(move_hiding_templatestyles(args)) local root = mw.html.create() local child = args.child and mw.text.trim(args.child) == cfg.i18n.child_yes root = root:tag('table') if not child then root :addClass(cfg.i18n.class.sidebar) -- force collapsibleclass to be sidebar-collapse otherwise output nothing :addClass(collapsibleClass == cfg.i18n.class.collapse and cfg.i18n.class.collapse or nil) :addClass('nomobile') :addClass(args.float == cfg.i18n.float_none and cfg.i18n.class.float_none or nil) :addClass(args.float == cfg.i18n.float_left and cfg.i18n.class.float_left or nil) :addClass(args.wraplinks ~= cfg.i18n.wrap_true and cfg.i18n.class.wraplinks or nil) :addClass(args.bodyclass or args.class) :css('width', args.width or nil) :cssText(args.bodystyle or args.style) if args.outertitle then root :tag('caption') :addClass(cfg.i18n.class.outer_title) :addClass(args.outertitleclass) :cssText(args.outertitlestyle) :wikitext(args.outertitle) end if args.topimage then local imageCell = root:tag('tr'):tag('td') imageCell :addClass(cfg.i18n.class.top_image) :addClass(args.topimageclass) :cssText(args.topimagestyle) :wikitext(args.topimage) if args.topcaption then imageCell :tag('div') :addClass(cfg.i18n.class.top_caption) :cssText(args.topcaptionstyle) :wikitext(args.topcaption) end end if args.pretitle then root :tag('tr') :tag('td') :addClass(args.topimage and cfg.i18n.class.pretitle_with_top_image or cfg.i18n.class.pretitle) :addClass(args.pretitleclass) :cssText(args.basestyle) :cssText(args.pretitlestyle) :wikitext(args.pretitle) end else root :addClass(cfg.i18n.class.subgroup) :addClass(args.bodyclass or args.class) :cssText(args.bodystyle or args.style) end if args.title then if child then root :wikitext(args.title) else root :tag('tr') :tag('th') :addClass(args.pretitle and cfg.i18n.class.title_with_pretitle or cfg.i18n.class.title) :addClass(args.titleclass) :cssText(args.basestyle) :cssText(args.titlestyle) :wikitext(args.title) end end if args.image then local imageCell = root:tag('tr'):tag('td') imageCell :addClass(cfg.i18n.class.image) :addClass(args.imageclass) :cssText(args.imagestyle) :wikitext(args.image) if args.caption then imageCell :tag('div') :addClass(cfg.i18n.class.caption) :cssText(args.captionstyle) :wikitext(args.caption) end end if args.above then root :tag('tr') :tag('td') :addClass(cfg.i18n.class.above) :addClass(args.aboveclass) :cssText(args.abovestyle) :newline() -- newline required for bullet-points to work :wikitext(args.above) end local rowNums = {} for k, v in pairs(args) do k = '' .. k local num = k:match('^heading(%d+)$') or k:match('^content(%d+)$') if num then table.insert(rowNums, tonumber(num)) end end table.sort(rowNums) -- remove duplicates from the list (e.g. 3 will be duplicated if both heading3 -- and content3 are specified) for i = #rowNums, 1, -1 do if rowNums[i] == rowNums[i - 1] then table.remove(rowNums, i) end end for i, num in ipairs(rowNums) do local heading = args['heading' .. num] if heading then root :tag('tr') :tag('th') :addClass(cfg.i18n.class.heading) :addClass(args.headingclass) :addClass(args['heading' .. num .. 'class']) :cssText(args.basestyle) :cssText(args.headingstyle) :cssText(args['heading' .. num .. 'style']) :newline() :wikitext(heading) end local content = args['content' .. num] if content then root :tag('tr') :tag('td') :addClass(hasSubgroup(content) and cfg.i18n.class.content_with_subgroup or cfg.i18n.class.content) :addClass(args.contentclass) :addClass(args['content' .. num .. 'class']) :cssText(args.contentstyle) :cssText(args['content' .. num .. 'style']) :newline() :wikitext(content) :done() -- Without a linebreak after the </td>, a nested list like -- "* {{hlist| ...}}" doesn't parse correctly. :newline() end end if args.below then root :tag('tr') :tag('td') :addClass(cfg.i18n.class.below) :addClass(args.belowclass) :cssText(args.belowstyle) :newline() :wikitext(args.below) end if not child and has_navbar(args.navbar, args.name) then root :tag('tr') :tag('td') :addClass(cfg.i18n.class.navbar) :cssText(args.navbarstyle) :wikitext(require('Module:Navbar')._navbar{ args.name, mini = 1, fontstyle = args.navbarfontstyle }) end local base_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = cfg.i18n.templatestyles } } local templatestyles = '' if args['templatestyles'] and args['templatestyles'] ~= '' then templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['templatestyles'] } } end local child_templatestyles = '' if args['child templatestyles'] and args['child templatestyles'] ~= '' then child_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['child templatestyles'] } } end local grandchild_templatestyles = '' if args['grandchild templatestyles'] and args['grandchild templatestyles'] ~= '' then grandchild_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['grandchild templatestyles'] } } end return table.concat({ add_list_styles(args), -- see [hlist_note] above about ordering base_templatestyles, templatestyles, child_templatestyles, grandchild_templatestyles, hiding_templatestyles, tostring(root), (child and cfg.i18n.category.child or ''), categorizeTemplatesWithInlineStyles(args) }) end local function list_title(args, is_centered_list_titles, num) local title_text = trimAndAddAutomaticNewline(args['list' .. num .. 'title'] or cfg.i18n.default_list_title) local title if is_centered_list_titles then -- collapsible can be finicky, so provide some CSS/HTML to support title = mw.html.create('div') :addClass(cfg.i18n.class.list_title_centered) :wikitext(title_text) else title = mw.html.create() :wikitext(title_text) end local title_container = mw.html.create('div') :addClass(cfg.i18n.class.list_title) -- don't /need/ a listnumtitleclass because you can do -- .templateclass .listnumclass .sidebar-list-title :addClass(args.listtitleclass) :cssText(args.basestyle) :cssText(args.listtitlestyle) :cssText(args['list' .. num .. 'titlestyle']) :node(title) :done() return title_container end --[[ Main entry point for sidebar with collapsible lists. Does the work of creating the collapsible lists themselves and including them into the args. ]] function p.collapsible(frame) local args = getArgs(frame) if not args.name and frame:getParent():getTitle():gsub(cfg.i18n.pattern.collapse_sandbox, '') == cfg.i18n.collapse_title_not_to_add_navbar then args.navbar = cfg.i18n.navbar_none end local contentArgs = {} local is_centered_list_titles = false if args['centered list titles'] and args['centered list titles'] ~= '' then is_centered_list_titles = true end for k, v in pairs(args) do local num = string.match(k, '^list(%d+)$') if num then local expand = args.expanded and (args.expanded == 'all' or args.expanded == args['list' .. num .. 'name']) local row = mw.html.create('div') row :addClass(cfg.i18n.class.list) :addClass('mw-collapsible') :addClass((not expand) and 'mw-collapsed' or nil) :addClass(args['list' .. num .. 'class']) :cssText(args.listframestyle) :cssText(args['list' .. num .. 'framestyle']) :node(list_title(args, is_centered_list_titles, num)) :tag('div') :addClass(cfg.i18n.class.list_content) :addClass('mw-collapsible-content') -- don't /need/ a listnumstyleclass because you can do -- .templatename .listnumclass .sidebar-list :addClass(args.listclass) :cssText(args.liststyle) :cssText(args['list' .. num .. 'style']) :wikitext(trimAndAddAutomaticNewline(args['list' .. num])) contentArgs['content' .. num] = tostring(row) end end for k, v in pairs(contentArgs) do args[k] = v end return p.sidebar(frame, args, cfg.i18n.class.collapse) end return p 4d4f75b12d4765eed1a3a742463b568717d01d8f 406 405 2023-01-16T18:15:39Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain require('strict') local cfg = mw.loadData('Module:Sidebar/configuration') local p = {} local getArgs = require('Module:Arguments').getArgs --[[ Categorizes calling templates and modules with a 'style' parameter of any sort for tracking to convert to TemplateStyles. TODO after a long cleanup: Catch sidebars in other namespaces than Template and Module. TODO would probably want to remove /log and /archive as CS1 does ]] local function categorizeTemplatesWithInlineStyles(args) local title = mw.title.getCurrentTitle() if title.namespace ~= 10 and title.namespace ~= 828 then return '' end for _, pattern in ipairs (cfg.i18n.pattern.uncategorized_conversion_titles) do if title.text:match(pattern) then return '' end end for key, _ in pairs(args) do if mw.ustring.find(key, cfg.i18n.pattern.style_conversion) or key == 'width' then return cfg.i18n.category.conversion end end end --[[ For compatibility with the original {{sidebar with collapsible lists}} implementation, which passed some parameters through {{#if}} to trim their whitespace. This also triggered the automatic newline behavior. ]] -- See ([[meta:Help:Newlines and spaces#Automatic newline]]) local function trimAndAddAutomaticNewline(s) s = mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1") if mw.ustring.find(s, '^[#*:;]') or mw.ustring.find(s, '^{|') then return '\n' .. s else return s end end --[[ Finds whether a sidebar has a subgroup sidebar. ]] local function hasSubgroup(s) if mw.ustring.find(s, cfg.i18n.pattern.subgroup) then return true else return false end end local function has_navbar(navbar_mode, sidebar_name) return navbar_mode ~= cfg.i18n.navbar_none and navbar_mode ~= cfg.i18n.navbar_off and ( sidebar_name or mw.getCurrentFrame():getParent():getTitle():gsub(cfg.i18n.pattern.sandbox, '') ~= cfg.i18n.title_not_to_add_navbar ) end local function has_list_class(args, htmlclass) local patterns = { '^' .. htmlclass .. '$', '%s' .. htmlclass .. '$', '^' .. htmlclass .. '%s', '%s' .. htmlclass .. '%s' } for arg, value in pairs(args) do if type(arg) == 'string' and mw.ustring.find(arg, 'class') then for _, pattern in ipairs(patterns) do if mw.ustring.find(args[arg] or '', pattern) then return true end end end end return false end -- there are a lot of list classes in the wild, so we add their TemplateStyles local function add_list_styles(args) local frame = mw.getCurrentFrame() local function add_list_templatestyles(htmlclass, templatestyles) if has_list_class(args, htmlclass) then return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles } } else return '' end end local plainlist_styles = add_list_templatestyles('plainlist', 'Plainlist/styles.css') local hlist_styles = add_list_templatestyles('hlist', 'Hlist/styles.css') -- a second workaround for [[phab:T303378]] -- when that issue is fixed, we can actually use has_navbar not to emit the -- tag here if we want if has_navbar(args.navbar, args.name) and hlist_styles == '' then hlist_styles = frame:extensionTag{ name = 'templatestyles', args = { src = 'Hlist/styles.css' } } end -- hlist -> plainlist is best-effort to preserve old Common.css ordering. [hlist_note] return hlist_styles .. plainlist_styles end -- work around [[phab:T303378]] -- for each arg: find all the templatestyles strip markers, insert them into a -- table. then remove all templatestyles markers from the arg local function move_hiding_templatestyles(args) local gfind = string.gfind local gsub = string.gsub local templatestyles_markers = {} local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)' for k, arg in pairs(args) do for marker in gfind(arg, strip_marker_pattern) do table.insert(templatestyles_markers, marker) end args[k] = gsub(arg, strip_marker_pattern, '') end return templatestyles_markers end --[[ Main sidebar function. Takes the frame, args, and an optional collapsibleClass. The collapsibleClass is and should be used only for sidebars with collapsible lists, as in p.collapsible. ]] function p.sidebar(frame, args, collapsibleClass) if not args then args = getArgs(frame) end local hiding_templatestyles = table.concat(move_hiding_templatestyles(args)) local root = mw.html.create() local child = args.child and mw.text.trim(args.child) == cfg.i18n.child_yes root = root:tag('table') if not child then root :addClass(cfg.i18n.class.sidebar) -- force collapsibleclass to be sidebar-collapse otherwise output nothing :addClass(collapsibleClass == cfg.i18n.class.collapse and cfg.i18n.class.collapse or nil) :addClass('nomobile') :addClass(args.float == cfg.i18n.float_none and cfg.i18n.class.float_none or nil) :addClass(args.float == cfg.i18n.float_left and cfg.i18n.class.float_left or nil) :addClass(args.wraplinks ~= cfg.i18n.wrap_true and cfg.i18n.class.wraplinks or nil) :addClass(args.bodyclass or args.class) :css('width', args.width or nil) :cssText(args.bodystyle or args.style) if args.outertitle then root :tag('caption') :addClass(cfg.i18n.class.outer_title) :addClass(args.outertitleclass) :cssText(args.outertitlestyle) :wikitext(args.outertitle) end if args.topimage then local imageCell = root:tag('tr'):tag('td') imageCell :addClass(cfg.i18n.class.top_image) :addClass(args.topimageclass) :cssText(args.topimagestyle) :wikitext(args.topimage) if args.topcaption then imageCell :tag('div') :addClass(cfg.i18n.class.top_caption) :cssText(args.topcaptionstyle) :wikitext(args.topcaption) end end if args.pretitle then root :tag('tr') :tag('td') :addClass(args.topimage and cfg.i18n.class.pretitle_with_top_image or cfg.i18n.class.pretitle) :addClass(args.pretitleclass) :cssText(args.basestyle) :cssText(args.pretitlestyle) :wikitext(args.pretitle) end else root :addClass(cfg.i18n.class.subgroup) :addClass(args.bodyclass or args.class) :cssText(args.bodystyle or args.style) end if args.title then if child then root :wikitext(args.title) else root :tag('tr') :tag('th') :addClass(args.pretitle and cfg.i18n.class.title_with_pretitle or cfg.i18n.class.title) :addClass(args.titleclass) :cssText(args.basestyle) :cssText(args.titlestyle) :wikitext(args.title) end end if args.image then local imageCell = root:tag('tr'):tag('td') imageCell :addClass(cfg.i18n.class.image) :addClass(args.imageclass) :cssText(args.imagestyle) :wikitext(args.image) if args.caption then imageCell :tag('div') :addClass(cfg.i18n.class.caption) :cssText(args.captionstyle) :wikitext(args.caption) end end if args.above then root :tag('tr') :tag('td') :addClass(cfg.i18n.class.above) :addClass(args.aboveclass) :cssText(args.abovestyle) :newline() -- newline required for bullet-points to work :wikitext(args.above) end local rowNums = {} for k, v in pairs(args) do k = '' .. k local num = k:match('^heading(%d+)$') or k:match('^content(%d+)$') if num then table.insert(rowNums, tonumber(num)) end end table.sort(rowNums) -- remove duplicates from the list (e.g. 3 will be duplicated if both heading3 -- and content3 are specified) for i = #rowNums, 1, -1 do if rowNums[i] == rowNums[i - 1] then table.remove(rowNums, i) end end for i, num in ipairs(rowNums) do local heading = args['heading' .. num] if heading then root :tag('tr') :tag('th') :addClass(cfg.i18n.class.heading) :addClass(args.headingclass) :addClass(args['heading' .. num .. 'class']) :cssText(args.basestyle) :cssText(args.headingstyle) :cssText(args['heading' .. num .. 'style']) :newline() :wikitext(heading) end local content = args['content' .. num] if content then root :tag('tr') :tag('td') :addClass(hasSubgroup(content) and cfg.i18n.class.content_with_subgroup or cfg.i18n.class.content) :addClass(args.contentclass) :addClass(args['content' .. num .. 'class']) :cssText(args.contentstyle) :cssText(args['content' .. num .. 'style']) :newline() :wikitext(content) :done() -- Without a linebreak after the </td>, a nested list like -- "* {{hlist| ...}}" doesn't parse correctly. :newline() end end if args.below then root :tag('tr') :tag('td') :addClass(cfg.i18n.class.below) :addClass(args.belowclass) :cssText(args.belowstyle) :newline() :wikitext(args.below) end if not child and has_navbar(args.navbar, args.name) then root :tag('tr') :tag('td') :addClass(cfg.i18n.class.navbar) :cssText(args.navbarstyle) :wikitext(require('Module:Navbar')._navbar{ args.name, mini = 1, fontstyle = args.navbarfontstyle }) end local base_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = cfg.i18n.templatestyles } } local templatestyles = '' if args['templatestyles'] and args['templatestyles'] ~= '' then templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['templatestyles'] } } end local child_templatestyles = '' if args['child templatestyles'] and args['child templatestyles'] ~= '' then child_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['child templatestyles'] } } end local grandchild_templatestyles = '' if args['grandchild templatestyles'] and args['grandchild templatestyles'] ~= '' then grandchild_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['grandchild templatestyles'] } } end return table.concat({ add_list_styles(args), -- see [hlist_note] above about ordering base_templatestyles, templatestyles, child_templatestyles, grandchild_templatestyles, hiding_templatestyles, tostring(root), (child and cfg.i18n.category.child or ''), categorizeTemplatesWithInlineStyles(args) }) end local function list_title(args, is_centered_list_titles, num) local title_text = trimAndAddAutomaticNewline(args['list' .. num .. 'title'] or cfg.i18n.default_list_title) local title if is_centered_list_titles then -- collapsible can be finicky, so provide some CSS/HTML to support title = mw.html.create('div') :addClass(cfg.i18n.class.list_title_centered) :wikitext(title_text) else title = mw.html.create() :wikitext(title_text) end local title_container = mw.html.create('div') :addClass(cfg.i18n.class.list_title) -- don't /need/ a listnumtitleclass because you can do -- .templateclass .listnumclass .sidebar-list-title :addClass(args.listtitleclass) :cssText(args.basestyle) :cssText(args.listtitlestyle) :cssText(args['list' .. num .. 'titlestyle']) :node(title) :done() return title_container end --[[ Main entry point for sidebar with collapsible lists. Does the work of creating the collapsible lists themselves and including them into the args. ]] function p.collapsible(frame) local args = getArgs(frame) if not args.name and frame:getParent():getTitle():gsub(cfg.i18n.pattern.collapse_sandbox, '') == cfg.i18n.collapse_title_not_to_add_navbar then args.navbar = cfg.i18n.navbar_none end local contentArgs = {} local is_centered_list_titles = false if args['centered list titles'] and args['centered list titles'] ~= '' then is_centered_list_titles = true end for k, v in pairs(args) do local num = string.match(k, '^list(%d+)$') if num then local expand = args.expanded and (args.expanded == 'all' or args.expanded == args['list' .. num .. 'name']) local row = mw.html.create('div') row :addClass(cfg.i18n.class.list) :addClass('mw-collapsible') :addClass((not expand) and 'mw-collapsed' or nil) :addClass(args['list' .. num .. 'class']) :cssText(args.listframestyle) :cssText(args['list' .. num .. 'framestyle']) :node(list_title(args, is_centered_list_titles, num)) :tag('div') :addClass(cfg.i18n.class.list_content) :addClass('mw-collapsible-content') -- don't /need/ a listnumstyleclass because you can do -- .templatename .listnumclass .sidebar-list :addClass(args.listclass) :cssText(args.liststyle) :cssText(args['list' .. num .. 'style']) :wikitext(trimAndAddAutomaticNewline(args['list' .. num])) contentArgs['content' .. num] = tostring(row) end end for k, v in pairs(contentArgs) do args[k] = v end return p.sidebar(frame, args, cfg.i18n.class.collapse) end return p 4d4f75b12d4765eed1a3a742463b568717d01d8f Module:Navbar/configuration 828 200 397 2022-12-29T18:18:21Z beeleth>Izno 0 add hlist/styles.css Scribunto text/plain return { ['templatestyles'] = 'Module:Navbar/styles.css', ['hlist_templatestyles'] = 'Hlist/styles.css', ['box_text'] = 'This box: ', -- default text box when not plain or mini ['title_namespace'] = 'Template', -- namespace to default to for title ['invalid_title'] = 'Invalid title ', ['classes'] = { -- set a line to nil if you don't want it ['navbar'] = 'navbar', ['plainlinks'] = 'plainlinks', -- plainlinks ['horizontal_list'] = 'hlist', -- horizontal list class ['mini'] = 'navbar-mini', -- class indicating small links in the navbar ['this_box'] = 'navbar-boxtext', ['brackets'] = 'navbar-brackets', -- 'collapsible' is the key for a class to indicate the navbar is -- setting up the collapsible element in addition to the normal -- navbar. ['collapsible'] = 'navbar-collapse', ['collapsible_title_mini'] = 'navbar-ct-mini', ['collapsible_title_full'] = 'navbar-ct-full' } } b007c336b17ec4bcd4d5a9dca9f8cba301662b55 398 397 2023-01-16T18:15:37Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain return { ['templatestyles'] = 'Module:Navbar/styles.css', ['hlist_templatestyles'] = 'Hlist/styles.css', ['box_text'] = 'This box: ', -- default text box when not plain or mini ['title_namespace'] = 'Template', -- namespace to default to for title ['invalid_title'] = 'Invalid title ', ['classes'] = { -- set a line to nil if you don't want it ['navbar'] = 'navbar', ['plainlinks'] = 'plainlinks', -- plainlinks ['horizontal_list'] = 'hlist', -- horizontal list class ['mini'] = 'navbar-mini', -- class indicating small links in the navbar ['this_box'] = 'navbar-boxtext', ['brackets'] = 'navbar-brackets', -- 'collapsible' is the key for a class to indicate the navbar is -- setting up the collapsible element in addition to the normal -- navbar. ['collapsible'] = 'navbar-collapse', ['collapsible_title_mini'] = 'navbar-ct-mini', ['collapsible_title_full'] = 'navbar-ct-full' } } b007c336b17ec4bcd4d5a9dca9f8cba301662b55 Module:Navbar 828 199 395 2022-12-29T18:20:02Z beeleth>Izno 0 add templatestyles for hlist Scribunto text/plain local p = {} local cfg = mw.loadData('Module:Navbar/configuration') local function get_title_arg(is_collapsible, template) local title_arg = 1 if is_collapsible then title_arg = 2 end if template then title_arg = 'template' end return title_arg end local function choose_links(template, args) -- The show table indicates the default displayed items. -- view, talk, edit, hist, move, watch -- TODO: Move to configuration. local show = {true, true, true, false, false, false} if template then show[2] = false show[3] = false local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6, talk = 2, edit = 3, hist = 4, move = 5, watch = 6} -- TODO: Consider removing TableTools dependency. for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do local num = index[v] if num then show[num] = true end end end local remove_edit_link = args.noedit if remove_edit_link then show[3] = false end return show end local function add_link(link_description, ul, is_mini, font_style) local l if link_description.url then l = {'[', '', ']'} else l = {'[[', '|', ']]'} end ul:tag('li') :addClass('nv-' .. link_description.full) :wikitext(l[1] .. link_description.link .. l[2]) :tag(is_mini and 'abbr' or 'span') :attr('title', link_description.html_title) :cssText(font_style) :wikitext(is_mini and link_description.mini or link_description.full) :done() :wikitext(l[3]) :done() end local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style) local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace) if not title then error(cfg.invalid_title .. title_text) end local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or '' -- TODO: Get link_descriptions and show into the configuration module. -- link_descriptions should be easier... local link_descriptions = { { ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template', ['link'] = title.fullText, ['url'] = false }, { ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template', ['link'] = talkpage, ['url'] = false }, { ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template', ['link'] = title:fullUrl('action=edit'), ['url'] = true }, { ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template', ['link'] = title:fullUrl('action=history'), ['url'] = true }, { ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template', ['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true }, { ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template', ['link'] = title:fullUrl('action=watch'), ['url'] = true } } local ul = mw.html.create('ul') if has_brackets then ul:addClass(cfg.classes.brackets) :cssText(font_style) end for i, _ in ipairs(displayed_links) do if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end end return ul:done() end function p._navbar(args) -- TODO: We probably don't need both fontstyle and fontcolor... local font_style = args.fontstyle local font_color = args.fontcolor local is_collapsible = args.collapsible local is_mini = args.mini local is_plain = args.plain local collapsible_class = nil if is_collapsible then collapsible_class = cfg.classes.collapsible if not is_plain then is_mini = 1 end if font_color then font_style = (font_style or '') .. '; color: ' .. font_color .. ';' end end local navbar_style = args.style local div = mw.html.create():tag('div') div :addClass(cfg.classes.navbar) :addClass(cfg.classes.plainlinks) :addClass(cfg.classes.horizontal_list) :addClass(collapsible_class) -- we made the determination earlier :cssText(navbar_style) if is_mini then div:addClass(cfg.classes.mini) end local box_text = (args.text or cfg.box_text) .. ' ' -- the concatenated space guarantees the box text is separated if not (is_mini or is_plain) then div :tag('span') :addClass(cfg.classes.box_text) :cssText(font_style) :wikitext(box_text) end local template = args.template local displayed_links = choose_links(template, args) local has_brackets = args.brackets local title_arg = get_title_arg(is_collapsible, template) local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle()) local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style) div:node(list) if is_collapsible then local title_text_class if is_mini then title_text_class = cfg.classes.collapsible_title_mini else title_text_class = cfg.classes.collapsible_title_full end div:done() :tag('div') :addClass(title_text_class) :cssText(font_style) :wikitext(args[1]) end local frame = mw.getCurrentFrame() -- hlist -> navbar is best-effort to preserve old Common.css ordering. return frame:extensionTag{ name = 'templatestyles', args = { src = cfg.hlist_templatestyles } } .. frame:extensionTag{ name = 'templatestyles', args = { src = cfg.templatestyles } } .. tostring(div:done()) end function p.navbar(frame) return p._navbar(require('Module:Arguments').getArgs(frame)) end return p 79f907e59eaa8bbf8dd50bb751933ebeaaa7eb17 396 395 2023-01-16T18:15:36Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain local p = {} local cfg = mw.loadData('Module:Navbar/configuration') local function get_title_arg(is_collapsible, template) local title_arg = 1 if is_collapsible then title_arg = 2 end if template then title_arg = 'template' end return title_arg end local function choose_links(template, args) -- The show table indicates the default displayed items. -- view, talk, edit, hist, move, watch -- TODO: Move to configuration. local show = {true, true, true, false, false, false} if template then show[2] = false show[3] = false local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6, talk = 2, edit = 3, hist = 4, move = 5, watch = 6} -- TODO: Consider removing TableTools dependency. for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do local num = index[v] if num then show[num] = true end end end local remove_edit_link = args.noedit if remove_edit_link then show[3] = false end return show end local function add_link(link_description, ul, is_mini, font_style) local l if link_description.url then l = {'[', '', ']'} else l = {'[[', '|', ']]'} end ul:tag('li') :addClass('nv-' .. link_description.full) :wikitext(l[1] .. link_description.link .. l[2]) :tag(is_mini and 'abbr' or 'span') :attr('title', link_description.html_title) :cssText(font_style) :wikitext(is_mini and link_description.mini or link_description.full) :done() :wikitext(l[3]) :done() end local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style) local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace) if not title then error(cfg.invalid_title .. title_text) end local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or '' -- TODO: Get link_descriptions and show into the configuration module. -- link_descriptions should be easier... local link_descriptions = { { ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template', ['link'] = title.fullText, ['url'] = false }, { ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template', ['link'] = talkpage, ['url'] = false }, { ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template', ['link'] = title:fullUrl('action=edit'), ['url'] = true }, { ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template', ['link'] = title:fullUrl('action=history'), ['url'] = true }, { ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template', ['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true }, { ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template', ['link'] = title:fullUrl('action=watch'), ['url'] = true } } local ul = mw.html.create('ul') if has_brackets then ul:addClass(cfg.classes.brackets) :cssText(font_style) end for i, _ in ipairs(displayed_links) do if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end end return ul:done() end function p._navbar(args) -- TODO: We probably don't need both fontstyle and fontcolor... local font_style = args.fontstyle local font_color = args.fontcolor local is_collapsible = args.collapsible local is_mini = args.mini local is_plain = args.plain local collapsible_class = nil if is_collapsible then collapsible_class = cfg.classes.collapsible if not is_plain then is_mini = 1 end if font_color then font_style = (font_style or '') .. '; color: ' .. font_color .. ';' end end local navbar_style = args.style local div = mw.html.create():tag('div') div :addClass(cfg.classes.navbar) :addClass(cfg.classes.plainlinks) :addClass(cfg.classes.horizontal_list) :addClass(collapsible_class) -- we made the determination earlier :cssText(navbar_style) if is_mini then div:addClass(cfg.classes.mini) end local box_text = (args.text or cfg.box_text) .. ' ' -- the concatenated space guarantees the box text is separated if not (is_mini or is_plain) then div :tag('span') :addClass(cfg.classes.box_text) :cssText(font_style) :wikitext(box_text) end local template = args.template local displayed_links = choose_links(template, args) local has_brackets = args.brackets local title_arg = get_title_arg(is_collapsible, template) local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle()) local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style) div:node(list) if is_collapsible then local title_text_class if is_mini then title_text_class = cfg.classes.collapsible_title_mini else title_text_class = cfg.classes.collapsible_title_full end div:done() :tag('div') :addClass(title_text_class) :cssText(font_style) :wikitext(args[1]) end local frame = mw.getCurrentFrame() -- hlist -> navbar is best-effort to preserve old Common.css ordering. return frame:extensionTag{ name = 'templatestyles', args = { src = cfg.hlist_templatestyles } } .. frame:extensionTag{ name = 'templatestyles', args = { src = cfg.templatestyles } } .. tostring(div:done()) end function p.navbar(frame) return p._navbar(require('Module:Arguments').getArgs(frame)) end return p 79f907e59eaa8bbf8dd50bb751933ebeaaa7eb17 User:BEELETH 2 163 325 2023-01-14T20:49:00Z BEELETH 2 create user page wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Module:Transclusion count/data/I 828 229 457 2023-01-15T05:09:03Z beeleth>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. Scribunto text/plain return { ["IAAF_name"] = 2200, ["IAST"] = 5900, ["IBDB_name"] = 9000, ["ICD10"] = 4600, ["ICD9"] = 4400, ["ICS"] = 2800, ["IDN"] = 3200, ["IMDb_episode"] = 9500, ["IMDb_episodes"] = 2400, ["IMDb_name"] = 150000, ["IMDb_title"] = 184000, ["IMO_Number"] = 4000, ["IMSLP"] = 8100, ["IND"] = 7600, ["INR"] = 6100, ["INRConvert"] = 5400, ["INRConvert/CurrentRate"] = 5400, ["INRConvert/USD"] = 5300, ["INRConvert/out"] = 5400, ["IOC_profile"] = 6100, ["IP"] = 2500, ["IPA"] = 136000, ["IPA-all"] = 3400, ["IPA-de"] = 7600, ["IPA-es"] = 7700, ["IPA-fr"] = 42000, ["IPA-it"] = 5700, ["IPA-nl"] = 3600, ["IPA-pl"] = 3900, ["IPA-pt"] = 3600, ["IPA-ru"] = 2600, ["IPA-sh"] = 2700, ["IPA-sl"] = 6800, ["IPA-th"] = 2900, ["IPA_audio_link"] = 19000, ["IPA_link"] = 3100, ["IPAc-cmn"] = 2600, ["IPAc-en"] = 46000, ["IPAc-pl"] = 52000, ["IPC_athlete"] = 2600, ["IPSummary"] = 77000, ["IP_summary"] = 77000, ["IPsock"] = 9300, ["IPtalk"] = 22000, ["IPuser"] = 6800, ["IPvandal"] = 11000, ["IRC"] = 6500, ["IRI"] = 2100, ["IRL"] = 5500, ["IRN"] = 3500, ["ISBN"] = 459000, ["ISBNT"] = 38000, ["ISBN_missing"] = 2200, ["ISFDB_name"] = 4000, ["ISFDB_title"] = 4500, ["ISL"] = 2100, ["ISO_15924/script-example-character"] = 2700, ["ISO_15924/wp-article"] = 2700, ["ISO_15924/wp-article/format"] = 2700, ["ISO_15924/wp-article/label"] = 2700, ["ISO_3166_code"] = 488000, ["ISO_3166_name"] = 16000, ["ISO_639_name"] = 7000, ["ISP"] = 5400, ["ISR"] = 4700, ["ISSN"] = 11000, ["ISSN_link"] = 30000, ["ISTAT"] = 8100, ["ISU_figure_skater"] = 2500, ["ITA"] = 17000, ["ITF"] = 5900, ["ITF_profile"] = 8900, ["ITIS"] = 4300, ["ITN_talk"] = 9600, ["ITN_talk/date"] = 9600, ["IUCN_banner"] = 15000, ["I_sup"] = 4500, ["Iaaf_name"] = 7400, ["Ice_hockey"] = 20000, ["Ice_hockey_stats"] = 15000, ["Icehockeystats"] = 11000, ["Icon"] = 560000, ["If"] = 261000, ["If_all"] = 5800, ["If_between"] = 3700, ["If_both"] = 9870000, ["If_empty"] = 2930000, ["If_first_display_both"] = 61000, ["If_in_page"] = 7400, ["If_last_display_both"] = 28000, ["If_preview"] = 56000, ["If_then_show"] = 251000, ["Ifempty"] = 4000, ["Ifeq"] = 13000, ["Iferror_then_show"] = 3100, ["Ifexist_not_redirect"] = 1090000, ["Ifnotempty"] = 13000, ["Ifnumber"] = 32000, ["Ifsubst"] = 91000, ["Ih"] = 7500, ["Ill"] = 106000, ["Illm"] = 7000, ["Image_frame"] = 3700, ["Image_label"] = 4700, ["Image_label_begin"] = 4000, ["Image_label_end"] = 3600, ["Image_label_small"] = 2800, ["Image_needed"] = 4600, ["Image_other"] = 282000, ["Image_requested"] = 169000, ["Image_requested/Category_helper"] = 162000, ["Imbox"] = 904000, ["Imdb_name"] = 5300, ["Imdb_title"] = 4200, ["Import_style"] = 10000, ["Import_style/inputbox.css"] = 10000, ["Importance"] = 5540000, ["Importance/colour"] = 5560000, ["Importance_mask"] = 8780000, ["Improve_categories"] = 6600, ["In_class"] = 5500, ["In_lang"] = 348000, ["In_progress"] = 3000, ["In_string"] = 67000, ["In_title"] = 18000, ["Inactive_WikiProject_banner"] = 204000, ["Inactive_userpage_blanked"] = 4800, ["Include-USGov"] = 29000, ["Incomplete_list"] = 22000, ["Inconclusive"] = 2000, ["Increase"] = 40000, ["Incumbent_pope"] = 4300, ["Indent"] = 4000, ["IndexFungorum"] = 2200, ["Indian_English"] = 4100, ["Indian_Rupee"] = 9900, ["Indian_railway_code"] = 3100, ["Inflation"] = 18000, ["Inflation-fn"] = 5300, ["Inflation-year"] = 4300, ["Inflation/IN/startyear"] = 5400, ["Inflation/UK"] = 4200, ["Inflation/UK/dataset"] = 4200, ["Inflation/UK/startyear"] = 4200, ["Inflation/US"] = 11000, ["Inflation/US/dataset"] = 11000, ["Inflation/US/startyear"] = 11000, ["Inflation/fn"] = 6000, ["Inflation/year"] = 23000, ["Info"] = 7100, ["Infobox"] = 3110000, ["Infobox/Columns"] = 2200, ["Infobox/mobileviewfix.css"] = 19000, ["Infobox3cols"] = 16000, ["Infobox_AFL_biography"] = 14000, ["Infobox_Aircraft_Begin"] = 5500, ["Infobox_Aircraft_Type"] = 4800, ["Infobox_Athletics_Championships"] = 2600, ["Infobox_Australian_place"] = 15000, ["Infobox_CFL_biography"] = 2400, ["Infobox_COA_wide"] = 3100, ["Infobox_Canada_electoral_district"] = 2400, ["Infobox_Canadian_Football_League_biography"] = 5900, ["Infobox_Canadian_Football_League_biography/position"] = 5800, ["Infobox_Chinese"] = 19000, ["Infobox_Chinese/Footer"] = 8700, ["Infobox_Chinese/Header"] = 8700, ["Infobox_Chinese/Korean"] = 15000, ["Infobox_Christian_leader"] = 17000, ["Infobox_Election"] = 2500, ["Infobox_French_commune"] = 38000, ["Infobox_GAA_player"] = 3200, ["Infobox_Gaelic_games_player"] = 4900, ["Infobox_German_location"] = 13000, ["Infobox_German_place"] = 14000, ["Infobox_Greece_place"] = 2800, ["Infobox_Greek_Dimos"] = 2800, ["Infobox_Hindu_temple"] = 2400, ["Infobox_Indian_state_legislative_assembly_constituency"] = 3600, ["Infobox_Italian_comune"] = 8100, ["Infobox_Korean_name"] = 15000, ["Infobox_Korean_name/categories"] = 15000, ["Infobox_MLB_yearly"] = 3100, ["Infobox_NCAA_team_season"] = 18000, ["Infobox_NFL_biography"] = 27000, ["Infobox_NFL_player"] = 8200, ["Infobox_NFL_season"] = 2600, ["Infobox_NFL_team_season"] = 3900, ["Infobox_NRHP"] = 72000, ["Infobox_NRHP/conv"] = 18000, ["Infobox_NRHP/locmapin2region"] = 66000, ["Infobox_Officeholder"] = 5600, ["Infobox_Olympic_event"] = 7300, ["Infobox_Olympic_event/games_text"] = 7300, ["Infobox_Paralympic_event"] = 2500, ["Infobox_Paralympic_event/games_text"] = 2500, ["Infobox_Politician"] = 2400, ["Infobox_Romanian_subdivision"] = 3100, ["Infobox_Russian_district"] = 2000, ["Infobox_Russian_inhabited_locality"] = 4400, ["Infobox_SCOTUS_case"] = 3600, ["Infobox_Site_of_Special_Scientific_Interest"] = 2000, ["Infobox_Swiss_town"] = 2800, ["Infobox_Switzerland_municipality"] = 2900, ["Infobox_Turkey_place"] = 2100, ["Infobox_U.S._county"] = 3000, ["Infobox_U.S._county/district"] = 3000, ["Infobox_UK_legislation"] = 2200, ["Infobox_UK_place"] = 25000, ["Infobox_UK_place/NoDialCode"] = 7700, ["Infobox_UK_place/NoPostCode"] = 2900, ["Infobox_UK_place/area"] = 2300, ["Infobox_UK_place/dist"] = 2500, ["Infobox_UK_place/local"] = 25000, ["Infobox_UK_place/styles.css"] = 25000, ["Infobox_UN_resolution"] = 2300, ["Infobox_US_Supreme_Court_case"] = 3800, ["Infobox_US_Supreme_Court_case/courts"] = 3800, ["Infobox_Wikipedia_user"] = 9300, ["Infobox_YouTube_personality"] = 2400, ["Infobox_academic"] = 12000, ["Infobox_aircraft_begin"] = 14000, ["Infobox_aircraft_occurrence"] = 2200, ["Infobox_aircraft_type"] = 12000, ["Infobox_airline"] = 4500, ["Infobox_airport"] = 15000, ["Infobox_airport/datatable"] = 14000, ["Infobox_album"] = 160000, ["Infobox_album/color"] = 187000, ["Infobox_album/link"] = 160000, ["Infobox_anatomy"] = 4400, ["Infobox_ancient_site"] = 5100, ["Infobox_animanga/Footer"] = 6600, ["Infobox_animanga/Header"] = 6600, ["Infobox_animanga/Print"] = 5300, ["Infobox_animanga/Video"] = 4600, ["Infobox_architect"] = 3500, ["Infobox_artist"] = 27000, ["Infobox_artist_discography"] = 5800, ["Infobox_artwork"] = 11000, ["Infobox_athlete"] = 3100, ["Infobox_automobile"] = 8300, ["Infobox_award"] = 12000, ["Infobox_badminton_player"] = 3200, ["Infobox_baseball_biography"] = 28000, ["Infobox_baseball_biography/style"] = 28000, ["Infobox_baseball_biography/styles.css"] = 28000, ["Infobox_basketball_biography"] = 20000, ["Infobox_basketball_biography/style"] = 20000, ["Infobox_basketball_club"] = 3000, ["Infobox_beauty_pageant"] = 2400, ["Infobox_bilateral_relations"] = 4300, ["Infobox_body_of_water"] = 17000, ["Infobox_book"] = 51000, ["Infobox_boxer"] = 5600, ["Infobox_bridge"] = 5900, ["Infobox_building"] = 26000, ["Infobox_character"] = 7800, ["Infobox_chess_biography"] = 3500, ["Infobox_chess_player"] = 3000, ["Infobox_church"] = 14000, ["Infobox_church/denomination"] = 14000, ["Infobox_church/font_color"] = 14000, ["Infobox_civil_conflict"] = 2200, ["Infobox_civilian_attack"] = 4900, ["Infobox_college_coach"] = 11000, ["Infobox_college_football_game"] = 2100, ["Infobox_college_sports_team_season"] = 38000, ["Infobox_college_sports_team_season/link"] = 38000, ["Infobox_college_sports_team_season/name"] = 38000, ["Infobox_college_sports_team_season/succession"] = 38000, ["Infobox_college_sports_team_season/team"] = 38000, ["Infobox_comic_book_title"] = 2900, ["Infobox_comics_character"] = 3600, ["Infobox_comics_creator"] = 3500, ["Infobox_comics_creator/styles.css"] = 3500, ["Infobox_company"] = 82000, ["Infobox_concert"] = 3200, ["Infobox_constituency"] = 5000, ["Infobox_country"] = 6200, ["Infobox_country/formernext"] = 5900, ["Infobox_country/imagetable"] = 5000, ["Infobox_country/multirow"] = 8000, ["Infobox_country/status_text"] = 2700, ["Infobox_country/styles.css"] = 6200, ["Infobox_country_at_games"] = 14000, ["Infobox_country_at_games/core"] = 14000, ["Infobox_country_at_games/see_also"] = 12000, ["Infobox_court_case"] = 4500, ["Infobox_court_case/images"] = 2300, ["Infobox_cricket_tournament"] = 2200, ["Infobox_cricketer"] = 32000, ["Infobox_cricketer/career"] = 32000, ["Infobox_cricketer/national_side"] = 7400, ["Infobox_criminal"] = 6000, ["Infobox_curler"] = 2600, ["Infobox_cycling_race_report"] = 4400, ["Infobox_cyclist"] = 16000, ["Infobox_dam"] = 5500, ["Infobox_designation_list"] = 18000, ["Infobox_designation_list/entry"] = 16000, ["Infobox_dim"] = 6700, ["Infobox_dim/core"] = 6700, ["Infobox_diocese"] = 3800, ["Infobox_drug"] = 9200, ["Infobox_drug/chemical_formula"] = 9200, ["Infobox_drug/data_page_link"] = 9200, ["Infobox_drug/formatATC"] = 9100, ["Infobox_drug/formatCASnumber"] = 9200, ["Infobox_drug/formatChEBI"] = 9200, ["Infobox_drug/formatChEMBL"] = 9200, ["Infobox_drug/formatChemDBNIAID"] = 9200, ["Infobox_drug/formatChemSpider"] = 9200, ["Infobox_drug/formatCompTox"] = 9200, ["Infobox_drug/formatDrugBank"] = 9200, ["Infobox_drug/formatIUPHARBPS"] = 9200, ["Infobox_drug/formatJmol"] = 9200, ["Infobox_drug/formatKEGG"] = 9200, ["Infobox_drug/formatPDBligand"] = 8600, ["Infobox_drug/formatPubChemCID"] = 9200, ["Infobox_drug/formatPubChemSID"] = 9200, ["Infobox_drug/formatUNII"] = 9200, ["Infobox_drug/legal_status"] = 9300, ["Infobox_drug/licence"] = 9200, ["Infobox_drug/maintenance_categories"] = 9200, ["Infobox_drug/pregnancy_category"] = 9200, ["Infobox_drug/title"] = 9200, ["Infobox_election"] = 27000, ["Infobox_election/row"] = 27000, ["Infobox_election/shortname"] = 26000, ["Infobox_enzyme"] = 5100, ["Infobox_ethnic_group"] = 7000, ["Infobox_event"] = 4900, ["Infobox_family"] = 2000, ["Infobox_figure_skater"] = 4100, ["Infobox_film"] = 152000, ["Infobox_film/short_description"] = 148000, ["Infobox_film_awards"] = 2500, ["Infobox_film_awards/link"] = 2500, ["Infobox_film_awards/style"] = 2500, ["Infobox_food"] = 6700, ["Infobox_football_biography"] = 203000, ["Infobox_football_club"] = 27000, ["Infobox_football_club_season"] = 19000, ["Infobox_football_league"] = 2500, ["Infobox_football_league_season"] = 19000, ["Infobox_football_match"] = 5600, ["Infobox_football_tournament_season"] = 7300, ["Infobox_former_subdivision"] = 3300, ["Infobox_former_subdivision/styles.css"] = 3300, ["Infobox_galaxy"] = 2000, ["Infobox_game"] = 2300, ["Infobox_game_score"] = 3400, ["Infobox_gene"] = 13000, ["Infobox_given_name"] = 4000, ["Infobox_golfer"] = 4300, ["Infobox_golfer/highest_ranking"] = 4300, ["Infobox_government_agency"] = 10000, ["Infobox_government_cabinet"] = 2400, ["Infobox_gridiron_football_person"] = 2700, ["Infobox_gridiron_football_person/position"] = 5800, ["Infobox_gymnast"] = 3300, ["Infobox_handball_biography"] = 4800, ["Infobox_historic_site"] = 11000, ["Infobox_horseraces"] = 2600, ["Infobox_hospital"] = 6200, ["Infobox_hospital/care_system"] = 6200, ["Infobox_hospital/lists"] = 6200, ["Infobox_ice_hockey_biography"] = 19000, ["Infobox_ice_hockey_player"] = 19000, ["Infobox_ice_hockey_team"] = 3000, ["Infobox_ice_hockey_team_season"] = 2000, ["Infobox_information_appliance"] = 2300, ["Infobox_international_football_competition"] = 5500, ["Infobox_islands"] = 8600, ["Infobox_islands/area"] = 9000, ["Infobox_islands/density"] = 9000, ["Infobox_islands/length"] = 8600, ["Infobox_islands/styles.css"] = 8600, ["Infobox_journal"] = 9600, ["Infobox_journal/Abbreviation_search"] = 9500, ["Infobox_journal/Bluebook_check"] = 9300, ["Infobox_journal/Former_check"] = 9300, ["Infobox_journal/ISO_4_check"] = 9300, ["Infobox_journal/ISSN-eISSN"] = 9400, ["Infobox_journal/Indexing_search"] = 9400, ["Infobox_journal/MathSciNet_check"] = 9300, ["Infobox_journal/NLM_check"] = 9300, ["Infobox_journal/frequency"] = 8500, ["Infobox_lake"] = 4500, ["Infobox_language"] = 9400, ["Infobox_language/family-color"] = 11000, ["Infobox_language/genetic"] = 6500, ["Infobox_language/linguistlist"] = 9400, ["Infobox_language/ref"] = 7000, ["Infobox_law_enforcement_agency"] = 2000, ["Infobox_legislature"] = 3500, ["Infobox_library"] = 2100, ["Infobox_lighthouse"] = 2600, ["Infobox_lighthouse/light"] = 2600, ["Infobox_locomotive"] = 4800, ["Infobox_magazine"] = 7400, ["Infobox_manner_of_address"] = 3200, ["Infobox_mapframe"] = 79000, ["Infobox_martial_artist"] = 5500, ["Infobox_martial_artist/record"] = 5500, ["Infobox_medal_templates"] = 414000, ["Infobox_medical_condition"] = 9900, ["Infobox_medical_condition_(new)"] = 8200, ["Infobox_military_conflict"] = 21000, ["Infobox_military_installation"] = 9600, ["Infobox_military_person"] = 44000, ["Infobox_military_unit"] = 25000, ["Infobox_mine"] = 2100, ["Infobox_model"] = 2300, ["Infobox_mountain"] = 27000, ["Infobox_multi-sport_competition_event"] = 2200, ["Infobox_museum"] = 10000, ["Infobox_musical_artist"] = 119000, ["Infobox_musical_artist/color"] = 119000, ["Infobox_musical_artist/hCard_class"] = 307000, ["Infobox_musical_composition"] = 2700, ["Infobox_name"] = 7300, ["Infobox_name_module"] = 11000, ["Infobox_newspaper"] = 9300, ["Infobox_nobility"] = 2400, ["Infobox_noble"] = 7000, ["Infobox_officeholder"] = 206000, ["Infobox_officeholder/office"] = 211000, ["Infobox_official_post"] = 7700, ["Infobox_organization"] = 35000, ["Infobox_pageant_titleholder"] = 2800, ["Infobox_park"] = 7100, ["Infobox_person"] = 454000, ["Infobox_person/Wikidata"] = 4800, ["Infobox_person/height"] = 100000, ["Infobox_person/length"] = 6900, ["Infobox_person/weight"] = 65000, ["Infobox_philosopher"] = 3200, ["Infobox_planet"] = 4700, ["Infobox_play"] = 3700, ["Infobox_political_party"] = 13000, ["Infobox_power_station"] = 2900, ["Infobox_prepared_food"] = 3300, ["Infobox_professional_wrestler"] = 4100, ["Infobox_professional_wrestling_event"] = 2500, ["Infobox_protected_area"] = 14000, ["Infobox_protein_family"] = 2100, ["Infobox_publisher"] = 2300, ["Infobox_racehorse"] = 5500, ["Infobox_racing_driver"] = 3500, ["Infobox_radio_station"] = 22000, ["Infobox_rail"] = 2900, ["Infobox_rail_line"] = 7100, ["Infobox_rail_line/tracking"] = 7100, ["Infobox_rail_service"] = 2900, ["Infobox_rail_service/doc"] = 2900, ["Infobox_reality_competition_season"] = 3300, ["Infobox_record_label"] = 4000, ["Infobox_recurring_event"] = 6200, ["Infobox_religious_biography"] = 4900, ["Infobox_religious_building"] = 12000, ["Infobox_religious_building/color"] = 16000, ["Infobox_restaurant"] = 2300, ["Infobox_river"] = 29000, ["Infobox_river/calcunit"] = 29000, ["Infobox_river/discharge"] = 29000, ["Infobox_river/row-style"] = 29000, ["Infobox_river/source"] = 29000, ["Infobox_road"] = 24000, ["Infobox_road/meta/mask/category"] = 24000, ["Infobox_road/meta/mask/country"] = 24000, ["Infobox_road/styles.css"] = 25000, ["Infobox_road_small"] = 2200, ["Infobox_rockunit"] = 6400, ["Infobox_royalty"] = 21000, ["Infobox_royalty/short_description"] = 13000, ["Infobox_rugby_biography"] = 15000, ["Infobox_rugby_biography/correct_date"] = 15000, ["Infobox_rugby_biography/depcheck"] = 6800, ["Infobox_rugby_league_biography"] = 9800, ["Infobox_rugby_league_biography/PLAYER"] = 9700, ["Infobox_rugby_team"] = 2600, ["Infobox_sailboat_specifications"] = 2100, ["Infobox_saint"] = 4900, ["Infobox_school"] = 38000, ["Infobox_school/short_description"] = 38000, ["Infobox_school_district"] = 5600, ["Infobox_school_district/styles.css"] = 5600, ["Infobox_scientist"] = 47000, ["Infobox_service_record"] = 2600, ["Infobox_settlement"] = 551000, ["Infobox_settlement/areadisp"] = 231000, ["Infobox_settlement/columns"] = 92000, ["Infobox_settlement/columns/styles.css"] = 92000, ["Infobox_settlement/densdisp"] = 421000, ["Infobox_settlement/impus"] = 80000, ["Infobox_settlement/lengthdisp"] = 167000, ["Infobox_settlement/link"] = 92000, ["Infobox_settlement/metric"] = 206000, ["Infobox_settlement/pref"] = 286000, ["Infobox_settlement/styles.css"] = 551000, ["Infobox_ship_begin"] = 40000, ["Infobox_ship_career"] = 37000, ["Infobox_ship_characteristics"] = 40000, ["Infobox_ship_class_overview"] = 4000, ["Infobox_ship_image"] = 40000, ["Infobox_shopping_mall"] = 3400, ["Infobox_short_story"] = 2300, ["Infobox_skier"] = 2500, ["Infobox_soap_character"] = 2900, ["Infobox_software"] = 14000, ["Infobox_software/simple"] = 14000, ["Infobox_song"] = 74000, ["Infobox_song/color"] = 74000, ["Infobox_song/link"] = 74000, ["Infobox_spaceflight"] = 3500, ["Infobox_spaceflight/styles.css"] = 3500, ["Infobox_sports_competition_event"] = 15000, ["Infobox_sports_competition_event/medalrow"] = 10000, ["Infobox_sports_league"] = 4900, ["Infobox_sports_season"] = 5100, ["Infobox_sports_team"] = 2300, ["Infobox_sportsperson"] = 105000, ["Infobox_stadium"] = 3800, ["Infobox_station"] = 54000, ["Infobox_station/doc"] = 54000, ["Infobox_station/services"] = 54000, ["Infobox_station/styles.css"] = 54000, ["Infobox_street"] = 3200, ["Infobox_swimmer"] = 9300, ["Infobox_television"] = 55000, ["Infobox_television/Short_description"] = 53000, ["Infobox_television_channel"] = 6200, ["Infobox_television_episode"] = 11000, ["Infobox_television_episode/styles.css"] = 11000, ["Infobox_television_season"] = 9100, ["Infobox_television_station"] = 3700, ["Infobox_tennis_biography"] = 9900, ["Infobox_tennis_event"] = 2300, ["Infobox_tennis_tournament_event"] = 18000, ["Infobox_tennis_tournament_year"] = 8900, ["Infobox_tennis_tournament_year/color"] = 27000, ["Infobox_tennis_tournament_year/footer"] = 27000, ["Infobox_train"] = 2200, ["Infobox_tropical_cyclone"] = 2300, ["Infobox_union"] = 2200, ["Infobox_university"] = 26000, ["Infobox_user"] = 2600, ["Infobox_venue"] = 17000, ["Infobox_video_game"] = 27000, ["Infobox_video_game/styles.css"] = 27000, ["Infobox_volleyball_biography"] = 5200, ["Infobox_weapon"] = 7200, ["Infobox_website"] = 7600, ["Infobox_writer"] = 37000, ["Information"] = 105000, ["Information/styles.css"] = 105000, ["Inprogress"] = 2200, ["Input_link"] = 32000, ["Instagram"] = 9600, ["Interlanguage_link"] = 142000, ["Interlanguage_link_multi"] = 20000, ["Internet_Archive_author"] = 18000, ["Internet_Archive_film"] = 2500, ["Intitle"] = 11000, ["Invalid_SVG"] = 3800, ["Invalid_SVG/styles.css"] = 3800, ["Ipsock"] = 7900, ["Iptalk"] = 20000, ["IranCensus2006"] = 54000, ["IranNCSGN"] = 3200, ["Iran_Census_2006"] = 54000, ["Irc"] = 2100, ["Irish_place_name"] = 2500, ["IsIPAddress"] = 38000, ["IsValidPageName"] = 133000, ["Is_country_in_Central_America"] = 13000, ["Is_country_in_the_Caribbean"] = 13000, ["Is_interwiki_link"] = 6000, ["Is_italic_taxon"] = 452000, ["Is_redirect"] = 25000, ["Isbn"] = 6600, ["Isfdb_name"] = 3900, ["Isfdb_title"] = 4500, ["Isnumeric"] = 199000, ["Iso2continent"] = 33000, ["Iso2country"] = 23000, ["Iso2country/article"] = 22000, ["Iso2country/data"] = 23000, ["Iso2nationality"] = 215000, ["Issubst"] = 71000, ["Isu_name"] = 2300, ["Italic_dab2"] = 5000, ["Italic_title"] = 294000, ["Italic_title_prefixed"] = 8600, ["Italics_colon"] = 3300, ["Italictitle"] = 4400, ["Ivm"] = 5800, ["Ivm/styles.css"] = 5800, ["Ivmbox"] = 120000, ["Ivory_messagebox"] = 134000, ["Module:I18n/complex_date"] = 64000, ["Module:IP"] = 111000, ["Module:IPA_symbol"] = 4300, ["Module:IPA_symbol/data"] = 4400, ["Module:IPAc-en"] = 46000, ["Module:IPAc-en/data"] = 46000, ["Module:IPAc-en/phonemes"] = 46000, ["Module:IPAc-en/pronunciation"] = 46000, ["Module:IPAddress"] = 168000, ["Module:ISO_3166"] = 982000, ["Module:ISO_3166/data/AT"] = 2500, ["Module:ISO_3166/data/BA"] = 3400, ["Module:ISO_3166/data/CA"] = 2700, ["Module:ISO_3166/data/CN"] = 2000, ["Module:ISO_3166/data/DE"] = 14000, ["Module:ISO_3166/data/ES"] = 3500, ["Module:ISO_3166/data/FR"] = 38000, ["Module:ISO_3166/data/GB"] = 6300, ["Module:ISO_3166/data/GR"] = 3100, ["Module:ISO_3166/data/IN"] = 28000, ["Module:ISO_3166/data/National"] = 982000, ["Module:ISO_3166/data/PL"] = 2500, ["Module:ISO_3166/data/RS"] = 3200, ["Module:ISO_3166/data/RU"] = 24000, ["Module:ISO_3166/data/TR"] = 2300, ["Module:ISO_3166/data/US"] = 83000, ["Module:ISO_639_name"] = 13000, ["Module:ISOdate"] = 64000, ["Module:Icon"] = 560000, ["Module:Icon/data"] = 560000, ["Module:If_empty"] = 2930000, ["Module:If_in_page"] = 7400, ["Module:If_preview"] = 465000, ["Module:If_preview/configuration"] = 465000, ["Module:If_preview/styles.css"] = 465000, ["Module:Import_style"] = 10000, ["Module:In_lang"] = 348000, ["Module:Indent"] = 4000, ["Module:Infobox"] = 3990000, ["Module:Infobox/dates"] = 64000, ["Module:Infobox/styles.css"] = 4240000, ["Module:Infobox3cols"] = 291000, ["Module:InfoboxImage"] = 4280000, ["Module:Infobox_body_of_water_tracking"] = 17000, ["Module:Infobox_cyclist_tracking"] = 16000, ["Module:Infobox_gene"] = 13000, ["Module:Infobox_mapframe"] = 375000, ["Module:Infobox_military_conflict"] = 21000, ["Module:Infobox_military_conflict/styles.css"] = 21000, ["Module:Infobox_multi-lingual_name"] = 19000, ["Module:Infobox_multi-lingual_name/data"] = 19000, ["Module:Infobox_power_station"] = 2900, ["Module:Infobox_road"] = 25000, ["Module:Infobox_road/browselinks"] = 25000, ["Module:Infobox_road/errors"] = 24000, ["Module:Infobox_road/length"] = 25000, ["Module:Infobox_road/locations"] = 24000, ["Module:Infobox_road/map"] = 25000, ["Module:Infobox_road/route"] = 25000, ["Module:Infobox_road/sections"] = 24000, ["Module:Infobox_television"] = 55000, ["Module:Infobox_television_disambiguation_check"] = 62000, ["Module:Infobox_television_episode"] = 11000, ["Module:Infobox_television_season_disambiguation_check"] = 8600, ["Module:Infobox_television_season_name"] = 9100, ["Module:Internet_Archive"] = 18000, ["Module:IrelandByCountyCatNav"] = 2500, ["Module:Is_infobox_in_lead"] = 372000, ["Module:Is_instance"] = 8000, ["Module:Italic_title"] = 1090000, ["Module:Italic_title2"] = 5000, } f698d6f8949cf41d32be12a685875510b85ac931 File:Halwhite.png 6 164 326 2023-01-16T17:58:21Z BEELETH 2 Halberd's white hair design as of January 2023 wikitext text/x-wiki == Summary == Halberd's white hair design as of January 2023 74e4626ac7a7929f9766762ac4613266d6e6b38a File:Halbrown.png 6 165 327 2023-01-16T17:59:22Z BEELETH 2 Halberd's brown hair design as of January 2023 wikitext text/x-wiki == Summary == Halberd's brown hair design as of January 2023 fccae251b6f8ca378d1485c5828dbb50492f01a6 Halberd (character) 0 166 328 2023-01-16T18:01:17Z BEELETH 2 Created page placeholder; will edit momentarily wikitext text/x-wiki Placeholder ed212fa164b940b935ec0a25b32878a0917c7268 MediaWiki:Common.css 8 167 329 2023-01-16T18:10:28Z BEELETH 2 Imported from Wikipedia css text/css /* CSS placed here will be applied to all skins */ /* * This is the CSS common to all desktop skins on en.Wikipedia. * Styling inside .mw-parser-output should generally use TemplateStyles. */ /* Reset italic styling set by user agent */ cite, dfn { font-style: inherit; } /* Straight quote marks for <q> */ q { quotes: '"' '"' "'" "'"; } /* Avoid collision of blockquote with floating elements by swapping margin and padding */ blockquote { overflow: hidden; margin: 1em 0; padding: 0 40px; } /* Consistent size for <small>, <sub> and <sup> */ small { font-size: 85%; } .mw-body-content sub, .mw-body-content sup { font-size: 80%; } /* Same spacing for indented and unindented paragraphs on talk pages */ .ns-talk .mw-body-content dd { margin-top: 0.4em; margin-bottom: 0.4em; } /* Reduce page jumps by hiding collapsed/dismissed content */ .client-js .mw-special-Watchlist #watchlist-message, .client-js .collapsible:not( .mw-made-collapsible).collapsed > tbody > tr:not(:first-child), /* Avoid FOUC/reflows on collapsed elements. */ /* This copies MediaWiki's solution for T42812 to apply to innercollapse/outercollapse (T325115). */ /* TODO: Use :is() selector at some reasonable future when support is good for Most Clients */ /* Reference: https://gerrit.wikimedia.org/g/mediawiki/core/+/ecda06cb2aef55b77c4b4d7ecda492d634419ead/resources/src/jquery/jquery.makeCollapsible.styles.less#75 */ .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > p, .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > table, .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > thead + tbody, .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) tr:not( :first-child ), .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) .mw-collapsible-content, /* Hide charinsert base for those not using the gadget */ #editpage-specialchars { display: none; } /* Make the list of references smaller * Keep in sync with Template:Refbegin/styles.css * And Template:Reflist/styles.css */ ol.references { font-size: 90%; margin-bottom: 0.5em; } /* Cite customizations for Parsoid * Once everything uses the one true parser these are just customizations */ .references span[ rel~='mw:referencedBy' ] > a:before { content: counter( mw-ref-linkback, lower-alpha ); } /* Styling for jQuery makeCollapsible, matching that of collapseButton */ .mw-parser-output .mw-collapsible-toggle:not(.mw-ui-button) { font-weight: normal; padding-right: 0.2em; padding-left: 0.2em; } .mw-collapsible-leftside-toggle .mw-collapsible-toggle { /* @noflip */ float: left; } /* Lists in wikitable data cells are always left-aligned */ .wikitable td ul, .wikitable td ol, .wikitable td dl { /* @noflip */ text-align: left; } /* Fix for hieroglyphs specificity issue in infoboxes ([[phab:T43869]]) */ .mw-parser-output table.mw-hiero-table td { vertical-align: middle; } /* Change the external link icon to a PDF icon for all PDF files */ .mw-parser-output a[href$=".pdf"].external, .mw-parser-output a[href*=".pdf?"].external, .mw-parser-output a[href*=".pdf#"].external, .mw-parser-output a[href$=".PDF"].external, .mw-parser-output a[href*=".PDF?"].external, .mw-parser-output a[href*=".PDF#"].external { background: url("//upload.wikimedia.org/wikipedia/commons/4/4d/Icon_pdf_file.png") no-repeat right; /* @noflip */ padding: 8px 18px 8px 0; } /* System messages styled similarly to fmbox */ div.mw-warning-with-logexcerpt, div.mw-lag-warn-high, div.mw-cascadeprotectedwarning, div#mw-protect-cascadeon, div.titleblacklist-warning { clear: both; margin: 0.2em 0; border: 1px solid #bb7070; background-color: #ffdbdb; padding: 0.25em 0.9em; box-sizing: border-box; } /* default colors for partial block message */ .mw-contributions-blocked-notice-partial .mw-warning-with-logexcerpt { border-color: #fc3; background-color: #fef6e7; } /* Increase the height of the image upload box */ #wpUploadDescription { height: 13em; } /* Minimum thumb width */ .thumbinner { min-width: 100px; } /* Prevent floating boxes from overlapping any category listings, file histories, edit previews, and edit [Show changes] views. */ #mw-subcategories, #mw-pages, #mw-category-media, #filehistory, #wikiPreview, #wikiDiff { clear: both; } /* Styling for tags in changes pages */ .mw-tag-markers { font-style: italic; font-size: 90%; } /* Hide stuff meant for accounts with special permissions. Made visible again in [[MediaWiki:Group-checkuser.css]], [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-abusefilter.css]], [[MediaWiki:Group-abusefilter-helper.css]], [[MediaWiki:Group-patroller.css]], [[MediaWiki:Group-templateeditor.css]], [[MediaWiki:Group-extendedmover.css]], [[MediaWiki:Group-extendedconfirmed.css]], and [[Mediawiki:Group-autoconfirmed.css]]. */ .checkuser-show, .sysop-show, .abusefilter-show, .abusefilter-helper-show, .patroller-show, .templateeditor-show, .extendedmover-show, .extendedconfirmed-show, .autoconfirmed-show, .user-show { display: none; } /* Hide the redlink generated by {{Editnotice}}, this overrides the ".sysop-show { display: none; }" above that applies to the same link as well. See [[phab:T45013]] Hide the images in editnotices to keep them readable in VE view. Long term, editnotices should become a core feature so that they can be designed responsive. */ .ve-ui-mwNoticesPopupTool-item .editnotice-redlink, .ve-ui-mwNoticesPopupTool-item .mbox-image, .ve-ui-mwNoticesPopupTool-item .mbox-imageright { display: none !important; } /* Remove bullets when there are multiple edit page warnings */ ul.permissions-errors { margin: 0; } ul.permissions-errors > li { list-style: none; } /* larger inline math */ span.mwe-math-mathml-inline { font-size: 118%; } /* Make <math display="block"> be left aligned with one space indent for * compatibility with style conventions */ .mwe-math-fallback-image-display, .mwe-math-mathml-display { margin-left: 1.6em !important; margin-top: 0.6em; margin-bottom: 0.6em; } .mwe-math-mathml-display math { display: inline; } @media screen { /* Gallery styles background changes are restricted to screen view. In printing we should avoid applying backgrounds. */ /* The backgrounds for galleries. */ #content .gallerybox div.thumb { /* Light gray padding */ background-color: #f8f9fa; } /* Put a chequered background behind images, only visible if they have transparency. '.filehistory a img' and '#file img:hover' are handled by MediaWiki core (as of 1.19) */ .gallerybox .thumb img { background: #fff url(//upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png) repeat; } /* But not on articles, user pages, or portals. */ .ns-0 .gallerybox .thumb img, .ns-2 .gallerybox .thumb img, .ns-100 .gallerybox .thumb img { background-image: none; } /* Display "From Wikipedia, the free encyclopedia" in skins that support it, do not apply to print mode */ #siteSub { display: block; } } /* Hide FlaggedRevs notice UI when there are no pending changes */ .flaggedrevs_draft_synced, .flaggedrevs_stable_synced, /* "Temporary" to remove links in sidebar T255381 */ #t-upload, /* Hide broken download box on Special:Book pending T285400 */ .mw-special-Book #coll-downloadbox { display: none; } /* * BELOW HERE THERE BE SOONTOBE TEMPLATESTYLES THINGS; * SEE [[MediaWiki talk:Common.css/to do]] */ /* Infobox template style */ .infobox { border: 1px solid #a2a9b1; border-spacing: 3px; background-color: #f8f9fa; color: black; /* @noflip */ margin: 0.5em 0 0.5em 1em; padding: 0.2em; /* @noflip */ float: right; /* @noflip */ clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .infobox-header, .infobox-label, .infobox-above, .infobox-full-data, .infobox-data, .infobox-below, .infobox-subheader, .infobox-image, .infobox-navbar, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox th, .infobox td { vertical-align: top; } .infobox-label, .infobox-data, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox th, .infobox td { /* @noflip */ text-align: left; } /* Remove .infobox when element selectors above are removed */ .infobox .infobox-above, .infobox .infobox-title, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox caption { font-size: 125%; font-weight: bold; text-align: center; } .infobox-title, /* Remove element selector when every .infobox thing is using the standard module/templates */ .infobox caption { padding: 0.2em; } /* Remove .infobox when element selectors above are removed */ .infobox .infobox-header, .infobox .infobox-subheader, .infobox .infobox-image, .infobox .infobox-full-data, .infobox .infobox-below { text-align: center; } /* Remove .infobox when element selectors above are removed */ .infobox .infobox-navbar { /* @noflip */ text-align: right; } /* Normal font styling for wikitable row headers with scope="row" tag */ .wikitable.plainrowheaders th[scope=row], .wikitable.plainrowheaders th[scope=rowgroup] { font-weight: normal; /* @noflip */ text-align: left; } /* Remove underlines from certain links */ .nounderlines a, .IPA a:link, .IPA a:visited { text-decoration: none !important; } /* Prevent line breaks in silly places where desired (nowrap) and links when we don't want them to (nowraplinks a) */ .nowrap, .nowraplinks a { white-space: nowrap; } /* But allow wrapping where desired: */ .wrap, .wraplinks a { white-space: normal; } /* texhtml class for inline math (based on generic times-serif class) */ span.texhtml { font-family: "Nimbus Roman No9 L", "Times New Roman", Times, serif; font-size: 118%; line-height: 1; white-space: nowrap; /* Force tabular and lining display for texhtml */ -webkit-font-feature-settings: "lnum", "tnum", "kern" 0; font-feature-settings: "lnum", "tnum", "kern" 0; font-variant-numeric: lining-nums tabular-nums; font-kerning: none; } span.texhtml span.texhtml { font-size: 100%; } @media screen { .nochecker .gallerybox .thumb img { background-image: none; } } /* Put anything you mean to be a sitewide addition above the TemplateStyles * comment above. */ 506d42a6c35ba5c31472523261b43c55e2b4d0e8 MediaWiki:Common.js 8 168 330 2023-01-16T18:11:17Z BEELETH 2 Imported from Wikipedia javascript text/javascript /* Any JavaScript here will be loaded for all users on every page load. */ /** * Keep code in MediaWiki:Common.js to a minimum as it is unconditionally * loaded for all users on every wiki page. If possible create a gadget that is * enabled by default instead of adding it here (since gadgets are fully * optimized ResourceLoader modules with possibility to add dependencies etc.) * * Since Common.js isn't a gadget, there is no place to declare its * dependencies, so we have to lazy load them with mw.loader.using on demand and * then execute the rest in the callback. In most cases these dependencies will * be loaded (or loading) already and the callback will not be delayed. In case a * dependency hasn't arrived yet it'll make sure those are loaded before this. */ /* global mw, $ */ /* jshint strict:false, browser:true */ mw.loader.using( [ 'mediawiki.util' ] ).done( function () { /* Begin of mw.loader.using callback */ /** * Map addPortletLink to mw.util * @deprecated: Use mw.util.addPortletLink instead. */ mw.log.deprecate( window, 'addPortletLink', mw.util.addPortletLink, 'Use mw.util.addPortletLink instead' ); /** * Test if an element has a certain class * @deprecated: Use $(element).hasClass() instead. */ mw.log.deprecate( window, 'hasClass', function ( element, className ) { return $( element ).hasClass( className ); }, 'Use jQuery.hasClass() instead' ); /** * @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL * @rev 6 */ var extraCSS = mw.util.getParamValue( 'withCSS' ), extraJS = mw.util.getParamValue( 'withJS' ); if ( extraCSS ) { if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) { mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' ); } else { mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } ); } } if ( extraJS ) { if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) { mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' ); } else { mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } ); } } /** * WikiMiniAtlas * * Description: WikiMiniAtlas is a popup click and drag world map. * This script causes all of our coordinate links to display the WikiMiniAtlas popup button. * The script itself is located on the Meta-Wiki because it is used by many projects. * See [[Meta:WikiMiniAtlas]] for more information. * Note - use of this service is recommended to be replaced with mw:Help:Extension:Kartographer */ $( function () { var requireWikiminiatlas = $( 'a.external.text[href*="geohack"]' ).length || $( 'div.kmldata' ).length; if ( requireWikiminiatlas ) { mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' ); } } ); /** * Collapsible tables; reimplemented with mw-collapsible * Styling is also in place to avoid FOUC * * Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]]. * @version 3.0.0 (2018-05-20) * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js * @author [[User:R. Koot]] * @author [[User:Krinkle]] * @author [[User:TheDJ]] * @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which * is supported in MediaWiki core. Shimmable since MediaWiki 1.32 * * @param {jQuery} $content */ function makeCollapsibleMwCollapsible( $content ) { var $tables = $content .find( 'table.collapsible:not(.mw-collapsible)' ) .addClass( 'mw-collapsible' ); $.each( $tables, function ( index, table ) { // mw.log.warn( 'This page is using the deprecated class collapsible. Please replace it with mw-collapsible.'); if ( $( table ).hasClass( 'collapsed' ) ) { $( table ).addClass( 'mw-collapsed' ); // mw.log.warn( 'This page is using the deprecated class collapsed. Please replace it with mw-collapsed.'); } } ); if ( $tables.length > 0 ) { mw.loader.using( 'jquery.makeCollapsible' ).then( function () { $tables.makeCollapsible(); } ); } } mw.hook( 'wikipage.content' ).add( makeCollapsibleMwCollapsible ); /** * Add support to mw-collapsible for autocollapse, innercollapse and outercollapse * * Maintainers: TheDJ */ function mwCollapsibleSetup( $collapsibleContent ) { var $element, $toggle, autoCollapseThreshold = 2; $.each( $collapsibleContent, function ( index, element ) { $element = $( element ); if ( $element.hasClass( 'collapsible' ) ) { $element.find( 'tr:first > th:first' ).prepend( $element.find( 'tr:first > * > .mw-collapsible-toggle' ) ); } if ( $collapsibleContent.length >= autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) { $element.data( 'mw-collapsible' ).collapse(); } else if ( $element.hasClass( 'innercollapse' ) ) { if ( $element.parents( '.outercollapse' ).length > 0 ) { $element.data( 'mw-collapsible' ).collapse(); } } // because of colored backgrounds, style the link in the text color // to ensure accessible contrast $toggle = $element.find( '.mw-collapsible-toggle' ); if ( $toggle.length ) { // Make the toggle inherit text color if ( $toggle.parent()[ 0 ].style.color ) { $toggle.find( 'a' ).css( 'color', 'inherit' ); } } } ); } mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup ); /** * Magic editintros **************************************************** * * Description: Adds editintros on disambiguation pages and BLP pages. * Maintainers: [[User:RockMFR]] * * @param {string} name */ function addEditIntro( name ) { $( '.mw-editsection, #ca-edit, #ca-ve-edit' ).find( 'a' ).each( function ( i, el ) { el.href = $( this ).attr( 'href' ) + '&editintro=' + name; } ); } if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) { $( function () { if ( document.getElementById( 'disambigbox' ) ) { addEditIntro( 'Template:Disambig_editintro' ); } } ); $( function () { var cats = mw.config.get( 'wgCategories' ); if ( !cats ) { return; } if ( $.inArray( 'Living people', cats ) !== -1 || $.inArray( 'Possibly living people', cats ) !== -1 ) { addEditIntro( 'Template:BLP_editintro' ); } } ); } /* Actions specific to the edit page */ if ( mw.config.get( 'wgAction' ) === 'edit' || mw.config.get( 'wgAction' ) === 'submit' ) { /** * Fix edit summary prompt for undo * * Fixes the fact that the undo function combined with the "no edit summary prompter" * complains about missing editsummary, if leaving the edit summary unchanged. * Added by [[User:Deskana]], code by [[User:Tra]]. * See also [[phab:T10912]]. */ $( function () { if ( document.location.search.indexOf( 'undo=' ) !== -1 && document.getElementsByName( 'wpAutoSummary' )[ 0 ] ) { document.getElementsByName( 'wpAutoSummary' )[ 0 ].value = '1'; } } ); } /* End of mw.loader.using callback */ } ); /* DO NOT ADD CODE BELOW THIS LINE */ dc4bc28ba30537374651c2014e8066b13f8b0bba Template:Infobox 10 169 332 331 2023-01-16T18:15:23Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki {{#invoke:Infobox|infobox}}<includeonly>{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|[[Category:Infobox templates|{{remove first word|{{SUBPAGENAME}}}}]]}}}}|}}</includeonly><noinclude> {{documentation}} <!-- Categories go in the /doc subpage, and interwikis go in Wikidata. --> </noinclude> 817a9f5b6524eced06a57bd1d5fd7179f9369bf2 Module:Infobox 828 170 334 333 2023-01-16T18:15:23Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain local p = {} local args = {} local origArgs = {} local root local empty_row_categories = {} local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]' local has_rows = false local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = 'Plainlist/styles.css' }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = 'Hlist/styles.css' } } local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for _, arg in pairs(args_to_check) do for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end if list.found then break end end end end end local function fixChildBoxes(sval, tt) local function notempty( s ) return s and s:match( '%S' ) end if notempty(sval) then local marker = '<span class=special_infobox_marker>' local s = sval -- start moving templatestyles and categories inside of table rows local slast = '' while slast ~= s do slast = s s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])', '%2%1') s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1') end -- end moving templatestyles and categories inside of table rows s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1') s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker) if s:match(marker) then s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '') s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1') s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1') s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1') end if s:match(marker) then local subcells = mw.text.split(s, marker) s = '' for k = 1, #subcells do if k == 1 then s = s .. subcells[k] .. '</' .. tt .. '></tr>' elseif k == #subcells then local rowstyle = ' style="display:none"' if notempty(subcells[k]) then rowstyle = '' end s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' .. subcells[k] elseif notempty(subcells[k]) then if (k % 2) == 0 then s = s .. subcells[k] else s = s .. '<tr><' .. tt .. ' colspan=2>\n' .. subcells[k] .. '</' .. tt .. '></tr>' end end end end -- the next two lines add a newline at the end of lists for the PHP parser -- [[Special:Diff/849054481]] -- remove when [[:phab:T191516]] is fixed or OBE s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1') s = mw.ustring.gsub(s, '^(%{%|)', '\n%1') return s else return sval end end -- Cleans empty tables local function cleanInfobox() root = tostring(root) if has_rows == false then root = mw.ustring.gsub(root, '<table[^<>]*>%s*</table>', '') end end -- Returns the union of the values of two tables, as a sequence. local function union(t1, t2) local vals = {} for k, v in pairs(t1) do vals[v] = true end for k, v in pairs(t2) do vals[v] = true end local ret = {} for k, v in pairs(vals) do table.insert(ret, k) end return ret end -- Returns a table containing the numbers of the arguments that exist -- for the specified prefix. For example, if the prefix was 'data', and -- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}. local function getArgNums(prefix) local nums = {} for k, v in pairs(args) do local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -- Adds a row to the infobox, with either a header cell -- or a label/data cell combination. local function addRow(rowArgs) if rowArgs.header and rowArgs.header ~= '_BLANK_' then has_rows = true has_list_class({ rowArgs.rowclass, rowArgs.class, args.headerclass }) root :tag('tr') :addClass(rowArgs.rowclass) :cssText(rowArgs.rowstyle) :tag('th') :attr('colspan', '2') :addClass('infobox-header') :addClass(rowArgs.class) :addClass(args.headerclass) -- @deprecated next; target .infobox-<name> .infobox-header :cssText(args.headerstyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.header, 'th')) if rowArgs.data then root:wikitext( '[[Category:Pages using infobox templates with ignored data cells]]' ) end elseif rowArgs.data and rowArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ rowArgs.rowclass, rowArgs.class }) local row = root:tag('tr') row:addClass(rowArgs.rowclass) row:cssText(rowArgs.rowstyle) if rowArgs.label then row :tag('th') :attr('scope', 'row') :addClass('infobox-label') -- @deprecated next; target .infobox-<name> .infobox-label :cssText(args.labelstyle) :cssText(rowArgs.rowcellstyle) :wikitext(rowArgs.label) :done() end local dataCell = row:tag('td') dataCell :attr('colspan', not rowArgs.label and '2' or nil) :addClass(not rowArgs.label and 'infobox-full-data' or 'infobox-data') :addClass(rowArgs.class) -- @deprecated next; target .infobox-<name> .infobox(-full)-data :cssText(rowArgs.datastyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.data, 'td')) else table.insert(empty_row_categories, rowArgs.data or '') end end local function renderTitle() if not args.title then return end has_rows = true has_list_class({args.titleclass}) root :tag('caption') :addClass('infobox-title') :addClass(args.titleclass) -- @deprecated next; target .infobox-<name> .infobox-title :cssText(args.titlestyle) :wikitext(args.title) end local function renderAboveRow() if not args.above then return end has_rows = true has_list_class({ args.aboveclass }) root :tag('tr') :tag('th') :attr('colspan', '2') :addClass('infobox-above') :addClass(args.aboveclass) -- @deprecated next; target .infobox-<name> .infobox-above :cssText(args.abovestyle) :wikitext(fixChildBoxes(args.above,'th')) end local function renderBelowRow() if not args.below then return end has_rows = true has_list_class({ args.belowclass }) root :tag('tr') :tag('td') :attr('colspan', '2') :addClass('infobox-below') :addClass(args.belowclass) -- @deprecated next; target .infobox-<name> .infobox-below :cssText(args.belowstyle) :wikitext(fixChildBoxes(args.below,'td')) end local function addSubheaderRow(subheaderArgs) if subheaderArgs.data and subheaderArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ subheaderArgs.rowclass, subheaderArgs.class }) local row = root:tag('tr') row:addClass(subheaderArgs.rowclass) local dataCell = row:tag('td') dataCell :attr('colspan', '2') :addClass('infobox-subheader') :addClass(subheaderArgs.class) :cssText(subheaderArgs.datastyle) :cssText(subheaderArgs.rowcellstyle) :wikitext(fixChildBoxes(subheaderArgs.data, 'td')) else table.insert(empty_row_categories, subheaderArgs.data or '') end end local function renderSubheaders() if args.subheader then args.subheader1 = args.subheader end if args.subheaderrowclass then args.subheaderrowclass1 = args.subheaderrowclass end local subheadernums = getArgNums('subheader') for k, num in ipairs(subheadernums) do addSubheaderRow({ data = args['subheader' .. tostring(num)], -- @deprecated next; target .infobox-<name> .infobox-subheader datastyle = args.subheaderstyle, rowcellstyle = args['subheaderstyle' .. tostring(num)], class = args.subheaderclass, rowclass = args['subheaderrowclass' .. tostring(num)] }) end end local function addImageRow(imageArgs) if imageArgs.data and imageArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ imageArgs.rowclass, imageArgs.class }) local row = root:tag('tr') row:addClass(imageArgs.rowclass) local dataCell = row:tag('td') dataCell :attr('colspan', '2') :addClass('infobox-image') :addClass(imageArgs.class) :cssText(imageArgs.datastyle) :wikitext(fixChildBoxes(imageArgs.data, 'td')) else table.insert(empty_row_categories, imageArgs.data or '') end end local function renderImages() if args.image then args.image1 = args.image end if args.caption then args.caption1 = args.caption end local imagenums = getArgNums('image') for k, num in ipairs(imagenums) do local caption = args['caption' .. tostring(num)] local data = mw.html.create():wikitext(args['image' .. tostring(num)]) if caption then data :tag('div') :addClass('infobox-caption') -- @deprecated next; target .infobox-<name> .infobox-caption :cssText(args.captionstyle) :wikitext(caption) end addImageRow({ data = tostring(data), -- @deprecated next; target .infobox-<name> .infobox-image datastyle = args.imagestyle, class = args.imageclass, rowclass = args['imagerowclass' .. tostring(num)] }) end end -- When autoheaders are turned on, preprocesses the rows local function preprocessRows() if not args.autoheaders then return end local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) local lastheader for k, num in ipairs(rownums) do if args['header' .. tostring(num)] then if lastheader then args['header' .. tostring(lastheader)] = nil end lastheader = num elseif args['data' .. tostring(num)] and args['data' .. tostring(num)]:gsub( category_in_empty_row_pattern, '' ):match('^%S') then local data = args['data' .. tostring(num)] if data:gsub(category_in_empty_row_pattern, ''):match('%S') then lastheader = nil end end end if lastheader then args['header' .. tostring(lastheader)] = nil end end -- Gets the union of the header and data argument numbers, -- and renders them all in order local function renderRows() local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) for k, num in ipairs(rownums) do addRow({ header = args['header' .. tostring(num)], label = args['label' .. tostring(num)], data = args['data' .. tostring(num)], datastyle = args.datastyle, class = args['class' .. tostring(num)], rowclass = args['rowclass' .. tostring(num)], -- @deprecated next; target .infobox-<name> rowclass rowstyle = args['rowstyle' .. tostring(num)], rowcellstyle = args['rowcellstyle' .. tostring(num)] }) end end local function renderNavBar() if not args.name then return end has_rows = true root :tag('tr') :tag('td') :attr('colspan', '2') :addClass('infobox-navbar') :wikitext(require('Module:Navbar')._navbar{ args.name, mini = 1, }) end local function renderItalicTitle() local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title']) if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then root:wikitext(require('Module:Italic title')._main({})) end end -- Categories in otherwise empty rows are collected in empty_row_categories. -- This function adds them to the module output. It is not affected by -- args.decat because this module should not prevent module-external categories -- from rendering. local function renderEmptyRowCategories() for _, s in ipairs(empty_row_categories) do root:wikitext(s) end end -- Render tracking categories. args.decat == turns off tracking categories. local function renderTrackingCategories() if args.decat == 'yes' then return end if args.child == 'yes' then if args.title then root:wikitext( '[[Category:Pages using embedded infobox templates with the title parameter]]' ) end elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then root:wikitext('[[Category:Articles using infobox templates with no data rows]]') end end --[=[ Loads the templatestyles for the infobox. TODO: FINISH loading base templatestyles here rather than in MediaWiki:Common.css. There are 4-5000 pages with 'raw' infobox tables. See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :). When we do this we should clean up the inline CSS below too. Will have to do some bizarre conversion category like with sidebar. ]=] local function loadTemplateStyles() local frame = mw.getCurrentFrame() local hlist_templatestyles = '' if lists.hlist_t.found then hlist_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = lists.hlist_t.styles } } end local plainlist_templatestyles = '' if lists.plainlist_t.found then plainlist_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = lists.plainlist_t.styles } } end -- See function description local base_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' } } local templatestyles = '' if args['templatestyles'] then templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['templatestyles'] } } end local child_templatestyles = '' if args['child templatestyles'] then child_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['child templatestyles'] } } end local grandchild_templatestyles = '' if args['grandchild templatestyles'] then grandchild_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['grandchild templatestyles'] } } end return table.concat({ -- hlist -> plainlist -> base is best-effort to preserve old Common.css ordering. -- this ordering is not a guarantee because the rows of interest invoking -- each class may not be on a specific page hlist_templatestyles, plainlist_templatestyles, base_templatestyles, templatestyles, child_templatestyles, grandchild_templatestyles }) end -- common functions between the child and non child cases local function structure_infobox_common() renderSubheaders() renderImages() preprocessRows() renderRows() renderBelowRow() renderNavBar() renderItalicTitle() renderEmptyRowCategories() renderTrackingCategories() cleanInfobox() end -- Specify the overall layout of the infobox, with special settings if the -- infobox is used as a 'child' inside another infobox. local function _infobox() if args.child ~= 'yes' then root = mw.html.create('table') root :addClass(args.subbox == 'yes' and 'infobox-subbox' or 'infobox') :addClass(args.bodyclass) -- @deprecated next; target .infobox-<name> :cssText(args.bodystyle) has_list_class({ args.bodyclass }) renderTitle() renderAboveRow() else root = mw.html.create() root :wikitext(args.title) end structure_infobox_common() return loadTemplateStyles() .. root end -- If the argument exists and isn't blank, add it to the argument table. -- Blank arguments are treated as nil to match the behaviour of ParserFunctions. local function preprocessSingleArg(argName) if origArgs[argName] and origArgs[argName] ~= '' then args[argName] = origArgs[argName] end end -- Assign the parameters with the given prefixes to the args table, in order, in -- batches of the step size specified. This is to prevent references etc. from -- appearing in the wrong order. The prefixTable should be an array containing -- tables, each of which has two possible fields, a "prefix" string and a -- "depend" table. The function always parses parameters containing the "prefix" -- string, but only parses parameters in the "depend" table if the prefix -- parameter is present and non-blank. local function preprocessArgs(prefixTable, step) if type(prefixTable) ~= 'table' then error("Non-table value detected for the prefix table", 2) end if type(step) ~= 'number' then error("Invalid step value detected", 2) end -- Get arguments without a number suffix, and check for bad input. for i,v in ipairs(prefixTable) do if type(v) ~= 'table' or type(v.prefix) ~= "string" or (v.depend and type(v.depend) ~= 'table') then error('Invalid input detected to preprocessArgs prefix table', 2) end preprocessSingleArg(v.prefix) -- Only parse the depend parameter if the prefix parameter is present -- and not blank. if args[v.prefix] and v.depend then for j, dependValue in ipairs(v.depend) do if type(dependValue) ~= 'string' then error('Invalid "depend" parameter value detected in preprocessArgs') end preprocessSingleArg(dependValue) end end end -- Get arguments with number suffixes. local a = 1 -- Counter variable. local moreArgumentsExist = true while moreArgumentsExist == true do moreArgumentsExist = false for i = a, a + step - 1 do for j,v in ipairs(prefixTable) do local prefixArgName = v.prefix .. tostring(i) if origArgs[prefixArgName] then -- Do another loop if any arguments are found, even blank ones. moreArgumentsExist = true preprocessSingleArg(prefixArgName) end -- Process the depend table if the prefix argument is present -- and not blank, or we are processing "prefix1" and "prefix" is -- present and not blank, and if the depend table is present. if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then for j,dependValue in ipairs(v.depend) do local dependArgName = dependValue .. tostring(i) preprocessSingleArg(dependArgName) end end end end a = a + step end end -- Parse the data parameters in the same order that the old {{infobox}} did, so -- that references etc. will display in the expected places. Parameters that -- depend on another parameter are only processed if that parameter is present, -- to avoid phantom references appearing in article reference lists. local function parseDataParameters() preprocessSingleArg('autoheaders') preprocessSingleArg('child') preprocessSingleArg('bodyclass') preprocessSingleArg('subbox') preprocessSingleArg('bodystyle') preprocessSingleArg('title') preprocessSingleArg('titleclass') preprocessSingleArg('titlestyle') preprocessSingleArg('above') preprocessSingleArg('aboveclass') preprocessSingleArg('abovestyle') preprocessArgs({ {prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}} }, 10) preprocessSingleArg('subheaderstyle') preprocessSingleArg('subheaderclass') preprocessArgs({ {prefix = 'image', depend = {'caption', 'imagerowclass'}} }, 10) preprocessSingleArg('captionstyle') preprocessSingleArg('imagestyle') preprocessSingleArg('imageclass') preprocessArgs({ {prefix = 'header'}, {prefix = 'data', depend = {'label'}}, {prefix = 'rowclass'}, {prefix = 'rowstyle'}, {prefix = 'rowcellstyle'}, {prefix = 'class'} }, 50) preprocessSingleArg('headerclass') preprocessSingleArg('headerstyle') preprocessSingleArg('labelstyle') preprocessSingleArg('datastyle') preprocessSingleArg('below') preprocessSingleArg('belowclass') preprocessSingleArg('belowstyle') preprocessSingleArg('name') -- different behaviour for italics if blank or absent args['italic title'] = origArgs['italic title'] preprocessSingleArg('decat') preprocessSingleArg('templatestyles') preprocessSingleArg('child templatestyles') preprocessSingleArg('grandchild templatestyles') end -- If called via #invoke, use the args passed into the invoking template. -- Otherwise, for testing purposes, assume args are being passed directly in. function p.infobox(frame) if frame == mw.getCurrentFrame() then origArgs = frame:getParent().args else origArgs = frame end parseDataParameters() return _infobox() end -- For calling via #invoke within a template function p.infoboxTemplate(frame) origArgs = {} for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end parseDataParameters() return _infobox() end return p 0ddb7e5c8426d67cd589b710efb9912ddfb67fea Module:Yesno 828 171 336 335 2023-01-16T18:15:24Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain -- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y' or val == 'true' or val == 't' or val == 'on' or tonumber(val) == 1 then return true elseif val == false or val == 'no' or val == 'n' or val == 'false' or val == 'f' or val == 'off' or tonumber(val) == 0 then return false else return default end end f767643e7d12126d020d88d662a3dd057817b9dc Module:Arguments 828 172 338 337 2023-01-16T18:15:24Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain -- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local arguments = {} -- Generate four different tidyVal functions, so that we don't have to check the -- options every time we call it. local function tidyValDefault(key, val) if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val == '' then return nil else return val end else return val end end local function tidyValTrimOnly(key, val) if type(val) == 'string' then return val:match('^%s*(.-)%s*$') else return val end end local function tidyValRemoveBlanksOnly(key, val) if type(val) == 'string' then if val:find('%S') then return val else return nil end else return val end end local function tidyValNoChange(key, val) return val end local function matchesTitle(given, title) local tp = type( given ) return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title end local translate_mt = { __index = function(t, k) return k end } function arguments.getArgs(frame, options) checkType('getArgs', 1, frame, 'table', true) checkType('getArgs', 2, options, 'table', true) frame = frame or {} options = options or {} --[[ -- Set up argument translation. --]] options.translate = options.translate or {} if getmetatable(options.translate) == nil then setmetatable(options.translate, translate_mt) end if options.backtranslate == nil then options.backtranslate = {} for k,v in pairs(options.translate) do options.backtranslate[v] = k end end if options.backtranslate and getmetatable(options.backtranslate) == nil then setmetatable(options.backtranslate, { __index = function(t, k) if options.translate[k] ~= k then return nil else return k end end }) end --[[ -- Get the argument tables. If we were passed a valid frame object, get the -- frame arguments (fargs) and the parent frame arguments (pargs), depending -- on the options set and on the parent frame's availability. If we weren't -- passed a valid frame object, we are being called from another Lua module -- or from the debug console, so assume that we were passed a table of args -- directly, and assign it to a new variable (luaArgs). --]] local fargs, pargs, luaArgs if type(frame.args) == 'table' and type(frame.getParent) == 'function' then if options.wrappers then --[[ -- The wrappers option makes Module:Arguments look up arguments in -- either the frame argument table or the parent argument table, but -- not both. This means that users can use either the #invoke syntax -- or a wrapper template without the loss of performance associated -- with looking arguments up in both the frame and the parent frame. -- Module:Arguments will look up arguments in the parent frame -- if it finds the parent frame's title in options.wrapper; -- otherwise it will look up arguments in the frame object passed -- to getArgs. --]] local parent = frame:getParent() if not parent then fargs = frame.args else local title = parent:getTitle():gsub('/sandbox$', '') local found = false if matchesTitle(options.wrappers, title) then found = true elseif type(options.wrappers) == 'table' then for _,v in pairs(options.wrappers) do if matchesTitle(v, title) then found = true break end end end -- We test for false specifically here so that nil (the default) acts like true. if found or options.frameOnly == false then pargs = parent.args end if not found or options.parentOnly == false then fargs = frame.args end end else -- options.wrapper isn't set, so check the other options. if not options.parentOnly then fargs = frame.args end if not options.frameOnly then local parent = frame:getParent() pargs = parent and parent.args or nil end end if options.parentFirst then fargs, pargs = pargs, fargs end else luaArgs = frame end -- Set the order of precedence of the argument tables. If the variables are -- nil, nothing will be added to the table, which is how we avoid clashes -- between the frame/parent args and the Lua args. local argTables = {fargs} argTables[#argTables + 1] = pargs argTables[#argTables + 1] = luaArgs --[[ -- Generate the tidyVal function. If it has been specified by the user, we -- use that; if not, we choose one of four functions depending on the -- options chosen. This is so that we don't have to call the options table -- every time the function is called. --]] local tidyVal = options.valueFunc if tidyVal then if type(tidyVal) ~= 'function' then error( "bad value assigned to option 'valueFunc'" .. '(function expected, got ' .. type(tidyVal) .. ')', 2 ) end elseif options.trim ~= false then if options.removeBlanks ~= false then tidyVal = tidyValDefault else tidyVal = tidyValTrimOnly end else if options.removeBlanks ~= false then tidyVal = tidyValRemoveBlanksOnly else tidyVal = tidyValNoChange end end --[[ -- Set up the args, metaArgs and nilArgs tables. args will be the one -- accessed from functions, and metaArgs will hold the actual arguments. Nil -- arguments are memoized in nilArgs, and the metatable connects all of them -- together. --]] local args, metaArgs, nilArgs, metatable = {}, {}, {}, {} setmetatable(args, metatable) local function mergeArgs(tables) --[[ -- Accepts multiple tables as input and merges their keys and values -- into one table. If a value is already present it is not overwritten; -- tables listed earlier have precedence. We are also memoizing nil -- values, which can be overwritten if they are 's' (soft). --]] for _, t in ipairs(tables) do for key, val in pairs(t) do if metaArgs[key] == nil and nilArgs[key] ~= 'h' then local tidiedVal = tidyVal(key, val) if tidiedVal == nil then nilArgs[key] = 's' else metaArgs[key] = tidiedVal end end end end end --[[ -- Define metatable behaviour. Arguments are memoized in the metaArgs table, -- and are only fetched from the argument tables once. Fetching arguments -- from the argument tables is the most resource-intensive step in this -- module, so we try and avoid it where possible. For this reason, nil -- arguments are also memoized, in the nilArgs table. Also, we keep a record -- in the metatable of when pairs and ipairs have been called, so we do not -- run pairs and ipairs on the argument tables more than once. We also do -- not run ipairs on fargs and pargs if pairs has already been run, as all -- the arguments will already have been copied over. --]] metatable.__index = function (t, key) --[[ -- Fetches an argument when the args table is indexed. First we check -- to see if the value is memoized, and if not we try and fetch it from -- the argument tables. When we check memoization, we need to check -- metaArgs before nilArgs, as both can be non-nil at the same time. -- If the argument is not present in metaArgs, we also check whether -- pairs has been run yet. If pairs has already been run, we return nil. -- This is because all the arguments will have already been copied into -- metaArgs by the mergeArgs function, meaning that any other arguments -- must be nil. --]] if type(key) == 'string' then key = options.translate[key] end local val = metaArgs[key] if val ~= nil then return val elseif metatable.donePairs or nilArgs[key] then return nil end for _, argTable in ipairs(argTables) do local argTableVal = tidyVal(key, argTable[key]) if argTableVal ~= nil then metaArgs[key] = argTableVal return argTableVal end end nilArgs[key] = 'h' return nil end metatable.__newindex = function (t, key, val) -- This function is called when a module tries to add a new value to the -- args table, or tries to change an existing value. if type(key) == 'string' then key = options.translate[key] end if options.readOnly then error( 'could not write to argument table key "' .. tostring(key) .. '"; the table is read-only', 2 ) elseif options.noOverwrite and args[key] ~= nil then error( 'could not write to argument table key "' .. tostring(key) .. '"; overwriting existing arguments is not permitted', 2 ) elseif val == nil then --[[ -- If the argument is to be overwritten with nil, we need to erase -- the value in metaArgs, so that __index, __pairs and __ipairs do -- not use a previous existing value, if present; and we also need -- to memoize the nil in nilArgs, so that the value isn't looked -- up in the argument tables if it is accessed again. --]] metaArgs[key] = nil nilArgs[key] = 'h' else metaArgs[key] = val end end local function translatenext(invariant) local k, v = next(invariant.t, invariant.k) invariant.k = k if k == nil then return nil elseif type(k) ~= 'string' or not options.backtranslate then return k, v else local backtranslate = options.backtranslate[k] if backtranslate == nil then -- Skip this one. This is a tail call, so this won't cause stack overflow return translatenext(invariant) else return backtranslate, v end end end metatable.__pairs = function () -- Called when pairs is run on the args table. if not metatable.donePairs then mergeArgs(argTables) metatable.donePairs = true end return translatenext, { t = metaArgs } end local function inext(t, i) -- This uses our __index metamethod local v = t[i + 1] if v ~= nil then return i + 1, v end end metatable.__ipairs = function (t) -- Called when ipairs is run on the args table. return inext, t, 0 end return args end return arguments 3134ecce8429b810d445e29eae115e2ae4c36c53 Template:Tl 10 173 340 339 2023-01-16T18:15:24Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki #REDIRECT [[Template:Template link]] {{Redirect category shell| {{R from move}} }} d6593bb3b4a866249f55d0f34b047a71fe1f1529 Template:Template link 10 174 342 341 2023-01-16T18:15:25Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki &#123;&#123;[[Template:{{{1}}}|{{{1}}}]]&#125;&#125;<noinclude>{{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> eabbec62efe3044a98ebb3ce9e7d4d43c222351d Module:Message box 828 175 344 343 2023-01-16T18:15:25Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain require('strict') local getArgs local yesno = require('Module:Yesno') local lang = mw.language.getContentLanguage() local CONFIG_MODULE = 'Module:Message box/configuration' local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if args.demospace and args.demospace ~= '' then -- implement demospace parameter of mbox local demospace = string.lower(args.demospace) if DEMOSPACES[demospace] then -- use template from DEMOSPACES obj.cfg = cfg[DEMOSPACES[demospace]] elseif string.find( demospace, 'talk' ) then -- demo as a talk page obj.cfg = cfg.tmbox else -- default to ombox obj.cfg = cfg.ombox end elseif ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} -- For lazy loading of [[Module:Category handler]]. obj.hasCategories = false return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.hasCategories = true self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image -- Find if the box has been wrongly substituted. self.isSubstituted = cfg.substCheck and args.subst == 'SUBST' -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self.name = args.name if self.name then self:addClass('box-' .. string.gsub(self.name,' ','_')) end if yesno(args.plainlinks) ~= false then self:addClass('plainlinks') end for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText if self.isSmall then local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk) talkText = string.format('([[%s|talk]])', talkLink) else talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date) end self.info = args.info if yesno(args.removalnotice) then self.removalNotice = cfg.removalNotice end end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage or 'Imbox notice.png', imageSize) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end -- set templatestyles self.base_templatestyles = cfg.templatestyles self.templatestyles = args.templatestyles end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) end if self.isSubstituted then self:addCat('all', 'Pages with incorrectly substituted templates') end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() if not self.hasCategories then -- No categories added, no need to pass them to Category handler so, -- if it was invoked, it would return the empty string. -- So we shortcut and return the empty string. return "" end -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return require('Module:Category handler')._main{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Add the subst check error. if self.isSubstituted and self.name then root:tag('b') :addClass('error') :wikitext(string.format( 'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.', mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}') )) end local frame = mw.getCurrentFrame() root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.base_templatestyles }, }) -- Add support for a single custom templatestyles sheet. Undocumented as -- need should be limited and many templates using mbox are substed; we -- don't want to spread templatestyles sheets around to arbitrary places if self.templatestyles then root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.templatestyles }, }) end -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellDiv = textCell:tag('div') textCellDiv :addClass('mbox-text-span') :wikitext(self.issue or nil) if (self.talk or self.fix) then textCellDiv:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellDiv:wikitext(self.date and (' ' .. self.date) or nil) if self.info and not self.isSmall then textCellDiv :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end if self.removalNotice then textCellDiv:tag('span') :addClass('hide-when-compact') :tag('i') :wikitext(string.format(" (%s)", self.removalNotice)) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :addClass('mbox-invalid-type') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p, mt = {}, {} function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE)) box:setParameters() box:setCategories() return box:export() end function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) bdb0ecc9f26f26b9c0ce12a066a183ac9d4f0705 Module:Message box/configuration 828 176 346 345 2023-01-16T18:15:26Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', substCheck = true, classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', templateCategoryRequireName = true, templateErrorCategory = 'Article message templates with missing parameters', templateErrorParamsToCheck = {'issue', 'fix', 'subst'}, removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>', templatestyles = 'Module:Message box/ambox.css' }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true, templatestyles = 'Module:Message box/cmbox.css' }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false, templatestyles = 'Module:Message box/fmbox.css' }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox license.png' -- @todo We need an SVG version of this }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg' }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes', templatestyles = 'Module:Message box/imbox.css' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true, templatestyles = 'Module:Message box/ombox.css' }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, templateCategory = 'Talk message boxes', templatestyles = 'Module:Message box/tmbox.css' } } b6f0151037e6867b577c8cca32ff297e48697a10 Template:Yesno 10 177 348 347 2023-01-16T18:15:26Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#switch: {{<includeonly>safesubst:</includeonly>lc: {{{1|¬}}} }} |no |n |f |false |off |0 = {{{no|<!-- null -->}}} | = {{{blank|{{{no|<!-- null -->}}}}}} |¬ = {{{¬|}}} |yes |y |t |true |on |1 = {{{yes|yes}}} |#default = {{{def|{{{yes|yes}}}}}} }}<noinclude> {{Documentation}} </noinclude> 629c2937bc5cf7cfe13cd2a598582af832782399 Template:Main other 10 178 350 349 2023-01-16T18:15:27Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:0}} | main | other }} }} | main = {{{1|}}} | other | #default = {{{2|}}} }}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --> </noinclude> 86ad907ffeea3cc545159e00cd1f2d6433946450 Template:Nobold 10 179 352 351 2023-01-16T18:15:28Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki <templatestyles src="Nobold/styles.css"/><span class="nobold">{{{1}}}</span><noinclude> {{documentation}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> 9c92b5951772bb26ca0fbe9256418b65e47700dd Template:Nobold/styles.css 10 180 354 353 2023-01-16T18:15:28Z BEELETH 2 1 revision imported: Import from Wikipedia text text/plain /* {{pp-template}} */ /* Styling for Template:Nobold */ .nobold { font-weight: normal; } 83e5f0adacf8c7984251f1fd9d11ed82ebaadf03 Module:Check for unknown parameters 828 181 356 355 2023-01-16T18:15:28Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain -- This module may be used to compare the arguments passed to the parent -- with a list of arguments, returning a specified result if an argument is -- not on the list local p = {} local function trim(s) return s:match('^%s*(.-)%s*$') end local function isnotempty(s) return s and s:match('%S') end local function clean(text) -- Return text cleaned for display and truncated if too long. -- Strip markers are replaced with dummy text representing the original wikitext. local pos, truncated local function truncate(text) if truncated then return '' end if mw.ustring.len(text) > 25 then truncated = true text = mw.ustring.sub(text, 1, 25) .. '...' end return mw.text.nowiki(text) end local parts = {} for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do pos = remainder table.insert(parts, truncate(before) .. '&lt;' .. tag .. '&gt;...&lt;/' .. tag .. '&gt;') end table.insert(parts, truncate(text:sub(pos or 1))) return table.concat(parts) end function p._check(args, pargs) if type(args) ~= "table" or type(pargs) ~= "table" then -- TODO: error handling return end -- create the list of known args, regular expressions, and the return string local knownargs = {} local regexps = {} for k, v in pairs(args) do if type(k) == 'number' then v = trim(v) knownargs[v] = 1 elseif k:find('^regexp[1-9][0-9]*$') then table.insert(regexps, '^' .. v .. '$') end end -- loop over the parent args, and make sure they are on the list local ignoreblank = isnotempty(args['ignoreblank']) local showblankpos = isnotempty(args['showblankpositional']) local values = {} for k, v in pairs(pargs) do if type(k) == 'string' and knownargs[k] == nil then local knownflag = false for _, regexp in ipairs(regexps) do if mw.ustring.match(k, regexp) then knownflag = true break end end if not knownflag and ( not ignoreblank or isnotempty(v) ) then table.insert(values, clean(k)) end elseif type(k) == 'number' and knownargs[tostring(k)] == nil then local knownflag = false for _, regexp in ipairs(regexps) do if mw.ustring.match(tostring(k), regexp) then knownflag = true break end end if not knownflag and ( showblankpos or isnotempty(v) ) then table.insert(values, k .. ' = ' .. clean(v)) end end end -- add results to the output tables local res = {} if #values > 0 then local unknown_text = args['unknown'] or 'Found _VALUE_, ' if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then local preview_text = args['preview'] if isnotempty(preview_text) then preview_text = require('Module:If preview')._warning({preview_text}) elseif preview == nil then preview_text = unknown_text end unknown_text = preview_text end for _, v in pairs(values) do -- Fix odd bug for | = which gets stripped to the empty string and -- breaks category links if v == '' then v = ' ' end -- avoid error with v = 'example%2' ("invalid capture index") local r = unknown_text:gsub('_VALUE_', {_VALUE_ = v}) table.insert(res, r) end end return table.concat(res) end function p.check(frame) local args = frame.args local pargs = frame:getParent().args return p._check(args, pargs) end return p 93db6d115d4328d2a5148bb42959105e367b663e Module:String 828 182 358 357 2023-01-16T18:15:29Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain --[[ This module is intended to provide access to basic string functions. Most of the functions provided here can be invoked with named parameters, unnamed parameters, or a mixture. If named parameters are used, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. Depending on the intended use, it may be advantageous to either preserve or remove such whitespace. Global options ignore_errors: If set to 'true' or 1, any error condition will result in an empty string being returned rather than an error message. error_category: If an error occurs, specifies the name of a category to include with the error message. The default category is [Category:Errors reported by Module String]. no_category: If set to 'true' or 1, no category will be added if an error is generated. Unit tests for this module are available at Module:String/tests. ]] local str = {} --[[ len This function returns the length of the target string. Usage: {{#invoke:String|len|target_string|}} OR {{#invoke:String|len|s=target_string}} Parameters s: The string whose length to report If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. ]] function str.len( frame ) local new_args = str._getParameters( frame.args, {'s'} ) local s = new_args['s'] or '' return mw.ustring.len( s ) end --[[ sub This function returns a substring of the target string at specified indices. Usage: {{#invoke:String|sub|target_string|start_index|end_index}} OR {{#invoke:String|sub|s=target_string|i=start_index|j=end_index}} Parameters s: The string to return a subset of i: The fist index of the substring to return, defaults to 1. j: The last index of the string to return, defaults to the last character. The first character of the string is assigned an index of 1. If either i or j is a negative value, it is interpreted the same as selecting a character by counting from the end of the string. Hence, a value of -1 is the same as selecting the last character of the string. If the requested indices are out of range for the given string, an error is reported. ]] function str.sub( frame ) local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } ) local s = new_args['s'] or '' local i = tonumber( new_args['i'] ) or 1 local j = tonumber( new_args['j'] ) or -1 local len = mw.ustring.len( s ) -- Convert negatives for range checking if i < 0 then i = len + i + 1 end if j < 0 then j = len + j + 1 end if i > len or j > len or i < 1 or j < 1 then return str._error( 'String subset index out of range' ) end if j < i then return str._error( 'String subset indices out of order' ) end return mw.ustring.sub( s, i, j ) end --[[ This function implements that features of {{str sub old}} and is kept in order to maintain these older templates. ]] function str.sublength( frame ) local i = tonumber( frame.args.i ) or 0 local len = tonumber( frame.args.len ) return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) ) end --[[ _match This function returns a substring from the source string that matches a specified pattern. It is exported for use in other modules Usage: strmatch = require("Module:String")._match sresult = strmatch( s, pattern, start, match, plain, nomatch ) Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This sub-routine is exported for use in other modules function str._match( s, pattern, start, match_index, plain_flag, nomatch ) if s == '' then return str._error( 'Target string is empty' ) end if pattern == '' then return str._error( 'Pattern string is empty' ) end start = tonumber(start) or 1 if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then return str._error( 'Requested start is out of range' ) end if match_index == 0 then return str._error( 'Match index is out of range' ) end if plain_flag then pattern = str._escapePattern( pattern ) end local result if match_index == 1 then -- Find first match is simple case result = mw.ustring.match( s, pattern, start ) else if start > 1 then s = mw.ustring.sub( s, start ) end local iterator = mw.ustring.gmatch(s, pattern) if match_index > 0 then -- Forward search for w in iterator do match_index = match_index - 1 if match_index == 0 then result = w break end end else -- Reverse search local result_table = {} local count = 1 for w in iterator do result_table[count] = w count = count + 1 end result = result_table[ count + match_index ] end end if result == nil then if nomatch == nil then return str._error( 'Match not found' ) else return nomatch end else return result end end --[[ match This function returns a substring from the source string that matches a specified pattern. Usage: {{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}} OR {{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index |match=match_number|plain=plain_flag|nomatch=nomatch_output}} Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from each string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. If the match_number or start_index are out of range for the string being queried, then this function generates an error. An error is also generated if no match is found. If one adds the parameter ignore_errors=true, then the error will be suppressed and an empty string will be returned on any failure. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This is the entry point for #invoke:String|match function str.match( frame ) local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} ) local s = new_args['s'] or '' local start = tonumber( new_args['start'] ) or 1 local plain_flag = str._getBoolean( new_args['plain'] or false ) local pattern = new_args['pattern'] or '' local match_index = math.floor( tonumber(new_args['match']) or 1 ) local nomatch = new_args['nomatch'] return str._match( s, pattern, start, match_index, plain_flag, nomatch ) end --[[ pos This function returns a single character from the target string at position pos. Usage: {{#invoke:String|pos|target_string|index_value}} OR {{#invoke:String|pos|target=target_string|pos=index_value}} Parameters target: The string to search pos: The index for the character to return If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. The first character has an index value of 1. If one requests a negative value, this function will select a character by counting backwards from the end of the string. In other words pos = -1 is the same as asking for the last character. A requested value of zero, or a value greater than the length of the string returns an error. ]] function str.pos( frame ) local new_args = str._getParameters( frame.args, {'target', 'pos'} ) local target_str = new_args['target'] or '' local pos = tonumber( new_args['pos'] ) or 0 if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then return str._error( 'String index out of range' ) end return mw.ustring.sub( target_str, pos, pos ) end --[[ str_find This function duplicates the behavior of {{str_find}}, including all of its quirks. This is provided in order to support existing templates, but is NOT RECOMMENDED for new code and templates. New code is recommended to use the "find" function instead. Returns the first index in "source" that is a match to "target". Indexing is 1-based, and the function returns -1 if the "target" string is not present in "source". Important Note: If the "target" string is empty / missing, this function returns a value of "1", which is generally unexpected behavior, and must be accounted for separatetly. ]] function str.str_find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target'} ) local source_str = new_args['source'] or '' local target_str = new_args['target'] or '' if target_str == '' then return 1 end local start = mw.ustring.find( source_str, target_str, 1, true ) if start == nil then start = -1 end return start end --[[ find This function allows one to search for a target string or pattern within another string. Usage: {{#invoke:String|find|source_str|target_string|start_index|plain_flag}} OR {{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}} Parameters source: The string to search target: The string or pattern to find within source start: The index within the source string to start the search, defaults to 1 plain: Boolean flag indicating that target should be understood as plain text and not as a Lua style regular expression, defaults to true If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. This function returns the first index >= "start" where "target" can be found within "source". Indices are 1-based. If "target" is not found, then this function returns 0. If either "source" or "target" are missing / empty, this function also returns 0. This function should be safe for UTF-8 strings. ]] function str.find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['target'] or '' local start_pos = tonumber(new_args['start']) or 1 local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return 0 end plain = str._getBoolean( plain ) local start = mw.ustring.find( source_str, pattern, start_pos, plain ) if start == nil then start = 0 end return start end --[[ replace This function allows one to replace a target string or pattern within another string. Usage: {{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}} OR {{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string| count=replacement_count|plain=plain_flag}} Parameters source: The string to search pattern: The string or pattern to find within source replace: The replacement text count: The number of occurences to replace, defaults to all. plain: Boolean flag indicating that pattern should be understood as plain text and not as a Lua style regular expression, defaults to true ]] function str.replace( frame ) local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['pattern'] or '' local replace = new_args['replace'] or '' local count = tonumber( new_args['count'] ) local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return source_str end plain = str._getBoolean( plain ) if plain then pattern = str._escapePattern( pattern ) replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences. end local result if count ~= nil then result = mw.ustring.gsub( source_str, pattern, replace, count ) else result = mw.ustring.gsub( source_str, pattern, replace ) end return result end --[[ simple function to pipe string.rep to templates. ]] function str.rep( frame ) local repetitions = tonumber( frame.args[2] ) if not repetitions then return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' ) end return string.rep( frame.args[1] or '', repetitions ) end --[[ escapePattern This function escapes special characters from a Lua string pattern. See [1] for details on how patterns work. [1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns Usage: {{#invoke:String|escapePattern|pattern_string}} Parameters pattern_string: The pattern string to escape. ]] function str.escapePattern( frame ) local pattern_str = frame.args[1] if not pattern_str then return str._error( 'No pattern string specified' ) end local result = str._escapePattern( pattern_str ) return result end --[[ count This function counts the number of occurrences of one string in another. ]] function str.count(frame) local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'}) local source = args.source or '' local pattern = args.pattern or '' local plain = str._getBoolean(args.plain or true) if plain then pattern = str._escapePattern(pattern) end local _, count = mw.ustring.gsub(source, pattern, '') return count end --[[ endswith This function determines whether a string ends with another string. ]] function str.endswith(frame) local args = str._getParameters(frame.args, {'source', 'pattern'}) local source = args.source or '' local pattern = args.pattern or '' if pattern == '' then -- All strings end with the empty string. return "yes" end if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then return "yes" else return "" end end --[[ join Join all non empty arguments together; the first argument is the separator. Usage: {{#invoke:String|join|sep|one|two|three}} ]] function str.join(frame) local args = {} local sep for _, v in ipairs( frame.args ) do if sep then if v ~= '' then table.insert(args, v) end else sep = v end end return table.concat( args, sep or '' ) end --[[ Helper function that populates the argument list given that user may need to use a mix of named and unnamed parameters. This is relevant because named parameters are not identical to unnamed parameters due to string trimming, and when dealing with strings we sometimes want to either preserve or remove that whitespace depending on the application. ]] function str._getParameters( frame_args, arg_list ) local new_args = {} local index = 1 local value for _, arg in ipairs( arg_list ) do value = frame_args[arg] if value == nil then value = frame_args[index] index = index + 1 end new_args[arg] = value end return new_args end --[[ Helper function to handle error messages. ]] function str._error( error_str ) local frame = mw.getCurrentFrame() local error_category = frame.args.error_category or 'Errors reported by Module String' local ignore_errors = frame.args.ignore_errors or false local no_category = frame.args.no_category or false if str._getBoolean(ignore_errors) then return '' end local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>' if error_category ~= '' and not str._getBoolean( no_category ) then error_str = '[[Category:' .. error_category .. ']]' .. error_str end return error_str end --[[ Helper Function to interpret boolean strings ]] function str._getBoolean( boolean_str ) local boolean_value if type( boolean_str ) == 'string' then boolean_str = boolean_str:lower() if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0' or boolean_str == '' then boolean_value = false else boolean_value = true end elseif type( boolean_str ) == 'boolean' then boolean_value = boolean_str else error( 'No boolean value found' ) end return boolean_value end --[[ Helper function that escapes all pattern characters so that they will be treated as plain text. ]] function str._escapePattern( pattern_str ) return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ) end return str 6df794dd52434e0f6a372c9918f5a9dedd15f579 Module:Infobox/styles.css 828 183 360 359 2023-01-16T18:15:29Z BEELETH 2 1 revision imported: Import from Wikipedia text text/plain /* {{pp|small=y}} */ /* * This TemplateStyles sheet deliberately does NOT include the full set of * infobox styles. We are still working to migrate all of the manual * infoboxes. See [[MediaWiki talk:Common.css/to do#Infobox]] * DO NOT ADD THEM HERE */ /* * not strictly certain these styles are necessary since the modules now * exclusively output infobox-subbox or infobox, not both * just replicating the module faithfully */ .infobox-subbox { padding: 0; border: none; margin: -3px; width: auto; min-width: 100%; font-size: 100%; clear: none; float: none; background-color: transparent; } .infobox-3cols-child { margin: auto; } .infobox .navbar { font-size: 100%; } /* T281642 */ body.skin-minerva .infobox-header, body.skin-minerva .infobox-subheader, body.skin-minerva .infobox-above, body.skin-minerva .infobox-title, body.skin-minerva .infobox-image, body.skin-minerva .infobox-full-data, body.skin-minerva .infobox-below { text-align: center; } e8de6d96f4fde53afc4a6b0fed534405ab59b0a7 Module:TableTools 828 185 364 363 2023-01-16T18:15:30Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain ------------------------------------------------------------------------------------ -- TableTools -- -- -- -- This module includes a number of functions for dealing with Lua tables. -- -- It is a meta-module, meant to be called from other Lua modules, and should not -- -- be called directly from #invoke. -- ------------------------------------------------------------------------------------ local libraryUtil = require('libraryUtil') local p = {} -- Define often-used variables and functions. local floor = math.floor local infinity = math.huge local checkType = libraryUtil.checkType local checkTypeMulti = libraryUtil.checkTypeMulti ------------------------------------------------------------------------------------ -- isPositiveInteger -- -- This function returns true if the given value is a positive integer, and false -- if not. Although it doesn't operate on tables, it is included here as it is -- useful for determining whether a given table key is in the array part or the -- hash part of a table. ------------------------------------------------------------------------------------ function p.isPositiveInteger(v) return type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity end ------------------------------------------------------------------------------------ -- isNan -- -- This function returns true if the given number is a NaN value, and false if -- not. Although it doesn't operate on tables, it is included here as it is useful -- for determining whether a value can be a valid table key. Lua will generate an -- error if a NaN is used as a table key. ------------------------------------------------------------------------------------ function p.isNan(v) return type(v) == 'number' and v ~= v end ------------------------------------------------------------------------------------ -- shallowClone -- -- This returns a clone of a table. The value returned is a new table, but all -- subtables and functions are shared. Metamethods are respected, but the returned -- table will have no metatable of its own. ------------------------------------------------------------------------------------ function p.shallowClone(t) checkType('shallowClone', 1, t, 'table') local ret = {} for k, v in pairs(t) do ret[k] = v end return ret end ------------------------------------------------------------------------------------ -- removeDuplicates -- -- This removes duplicate values from an array. Non-positive-integer keys are -- ignored. The earliest value is kept, and all subsequent duplicate values are -- removed, but otherwise the array order is unchanged. ------------------------------------------------------------------------------------ function p.removeDuplicates(arr) checkType('removeDuplicates', 1, arr, 'table') local isNan = p.isNan local ret, exists = {}, {} for _, v in ipairs(arr) do if isNan(v) then -- NaNs can't be table keys, and they are also unique, so we don't need to check existence. ret[#ret + 1] = v else if not exists[v] then ret[#ret + 1] = v exists[v] = true end end end return ret end ------------------------------------------------------------------------------------ -- numKeys -- -- This takes a table and returns an array containing the numbers of any numerical -- keys that have non-nil values, sorted in numerical order. ------------------------------------------------------------------------------------ function p.numKeys(t) checkType('numKeys', 1, t, 'table') local isPositiveInteger = p.isPositiveInteger local nums = {} for k in pairs(t) do if isPositiveInteger(k) then nums[#nums + 1] = k end end table.sort(nums) return nums end ------------------------------------------------------------------------------------ -- affixNums -- -- This takes a table and returns an array containing the numbers of keys with the -- specified prefix and suffix. For example, for the table -- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will return -- {1, 3, 6}. ------------------------------------------------------------------------------------ function p.affixNums(t, prefix, suffix) checkType('affixNums', 1, t, 'table') checkType('affixNums', 2, prefix, 'string', true) checkType('affixNums', 3, suffix, 'string', true) local function cleanPattern(s) -- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally. return s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1') end prefix = prefix or '' suffix = suffix or '' prefix = cleanPattern(prefix) suffix = cleanPattern(suffix) local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$' local nums = {} for k in pairs(t) do if type(k) == 'string' then local num = mw.ustring.match(k, pattern) if num then nums[#nums + 1] = tonumber(num) end end end table.sort(nums) return nums end ------------------------------------------------------------------------------------ -- numData -- -- Given a table with keys like {"foo1", "bar1", "foo2", "baz2"}, returns a table -- of subtables in the format -- {[1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'}}. -- Keys that don't end with an integer are stored in a subtable named "other". The -- compress option compresses the table so that it can be iterated over with -- ipairs. ------------------------------------------------------------------------------------ function p.numData(t, compress) checkType('numData', 1, t, 'table') checkType('numData', 2, compress, 'boolean', true) local ret = {} for k, v in pairs(t) do local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$') if num then num = tonumber(num) local subtable = ret[num] or {} if prefix == '' then -- Positional parameters match the blank string; put them at the start of the subtable instead. prefix = 1 end subtable[prefix] = v ret[num] = subtable else local subtable = ret.other or {} subtable[k] = v ret.other = subtable end end if compress then local other = ret.other ret = p.compressSparseArray(ret) ret.other = other end return ret end ------------------------------------------------------------------------------------ -- compressSparseArray -- -- This takes an array with one or more nil values, and removes the nil values -- while preserving the order, so that the array can be safely traversed with -- ipairs. ------------------------------------------------------------------------------------ function p.compressSparseArray(t) checkType('compressSparseArray', 1, t, 'table') local ret = {} local nums = p.numKeys(t) for _, num in ipairs(nums) do ret[#ret + 1] = t[num] end return ret end ------------------------------------------------------------------------------------ -- sparseIpairs -- -- This is an iterator for sparse arrays. It can be used like ipairs, but can -- handle nil values. ------------------------------------------------------------------------------------ function p.sparseIpairs(t) checkType('sparseIpairs', 1, t, 'table') local nums = p.numKeys(t) local i = 0 local lim = #nums return function () i = i + 1 if i <= lim then local key = nums[i] return key, t[key] else return nil, nil end end end ------------------------------------------------------------------------------------ -- size -- -- This returns the size of a key/value pair table. It will also work on arrays, -- but for arrays it is more efficient to use the # operator. ------------------------------------------------------------------------------------ function p.size(t) checkType('size', 1, t, 'table') local i = 0 for _ in pairs(t) do i = i + 1 end return i end local function defaultKeySort(item1, item2) -- "number" < "string", so numbers will be sorted before strings. local type1, type2 = type(item1), type(item2) if type1 ~= type2 then return type1 < type2 elseif type1 == 'table' or type1 == 'boolean' or type1 == 'function' then return tostring(item1) < tostring(item2) else return item1 < item2 end end ------------------------------------------------------------------------------------ -- keysToList -- -- Returns an array of the keys in a table, sorted using either a default -- comparison function or a custom keySort function. ------------------------------------------------------------------------------------ function p.keysToList(t, keySort, checked) if not checked then checkType('keysToList', 1, t, 'table') checkTypeMulti('keysToList', 2, keySort, {'function', 'boolean', 'nil'}) end local arr = {} local index = 1 for k in pairs(t) do arr[index] = k index = index + 1 end if keySort ~= false then keySort = type(keySort) == 'function' and keySort or defaultKeySort table.sort(arr, keySort) end return arr end ------------------------------------------------------------------------------------ -- sortedPairs -- -- Iterates through a table, with the keys sorted using the keysToList function. -- If there are only numerical keys, sparseIpairs is probably more efficient. ------------------------------------------------------------------------------------ function p.sortedPairs(t, keySort) checkType('sortedPairs', 1, t, 'table') checkType('sortedPairs', 2, keySort, 'function', true) local arr = p.keysToList(t, keySort, true) local i = 0 return function () i = i + 1 local key = arr[i] if key ~= nil then return key, t[key] else return nil, nil end end end ------------------------------------------------------------------------------------ -- isArray -- -- Returns true if the given value is a table and all keys are consecutive -- integers starting at 1. ------------------------------------------------------------------------------------ function p.isArray(v) if type(v) ~= 'table' then return false end local i = 0 for _ in pairs(v) do i = i + 1 if v[i] == nil then return false end end return true end ------------------------------------------------------------------------------------ -- isArrayLike -- -- Returns true if the given value is iterable and all keys are consecutive -- integers starting at 1. ------------------------------------------------------------------------------------ function p.isArrayLike(v) if not pcall(pairs, v) then return false end local i = 0 for _ in pairs(v) do i = i + 1 if v[i] == nil then return false end end return true end ------------------------------------------------------------------------------------ -- invert -- -- Transposes the keys and values in an array. For example, {"a", "b", "c"} -> -- {a = 1, b = 2, c = 3}. Duplicates are not supported (result values refer to -- the index of the last duplicate) and NaN values are ignored. ------------------------------------------------------------------------------------ function p.invert(arr) checkType("invert", 1, arr, "table") local isNan = p.isNan local map = {} for i, v in ipairs(arr) do if not isNan(v) then map[v] = i end end return map end ------------------------------------------------------------------------------------ -- listToSet -- -- Creates a set from the array part of the table. Indexing the set by any of the -- values of the array returns true. For example, {"a", "b", "c"} -> -- {a = true, b = true, c = true}. NaN values are ignored as Lua considers them -- never equal to any value (including other NaNs or even themselves). ------------------------------------------------------------------------------------ function p.listToSet(arr) checkType("listToSet", 1, arr, "table") local isNan = p.isNan local set = {} for _, v in ipairs(arr) do if not isNan(v) then set[v] = true end end return set end ------------------------------------------------------------------------------------ -- deepCopy -- -- Recursive deep copy function. Preserves identities of subtables. ------------------------------------------------------------------------------------ local function _deepCopy(orig, includeMetatable, already_seen) -- Stores copies of tables indexed by the original table. already_seen = already_seen or {} local copy = already_seen[orig] if copy ~= nil then return copy end if type(orig) == 'table' then copy = {} for orig_key, orig_value in pairs(orig) do copy[_deepCopy(orig_key, includeMetatable, already_seen)] = _deepCopy(orig_value, includeMetatable, already_seen) end already_seen[orig] = copy if includeMetatable then local mt = getmetatable(orig) if mt ~= nil then local mt_copy = _deepCopy(mt, includeMetatable, already_seen) setmetatable(copy, mt_copy) already_seen[mt] = mt_copy end end else -- number, string, boolean, etc copy = orig end return copy end function p.deepCopy(orig, noMetatable, already_seen) checkType("deepCopy", 3, already_seen, "table", true) return _deepCopy(orig, not noMetatable, already_seen) end ------------------------------------------------------------------------------------ -- sparseConcat -- -- Concatenates all values in the table that are indexed by a number, in order. -- sparseConcat{a, nil, c, d} => "acd" -- sparseConcat{nil, b, c, d} => "bcd" ------------------------------------------------------------------------------------ function p.sparseConcat(t, sep, i, j) local arr = {} local arr_i = 0 for _, v in p.sparseIpairs(t) do arr_i = arr_i + 1 arr[arr_i] = v end return table.concat(arr, sep, i, j) end ------------------------------------------------------------------------------------ -- length -- -- Finds the length of an array, or of a quasi-array with keys such as "data1", -- "data2", etc., using an exponential search algorithm. It is similar to the -- operator #, but may return a different value when there are gaps in the array -- portion of the table. Intended to be used on data loaded with mw.loadData. For -- other tables, use #. -- Note: #frame.args in frame object always be set to 0, regardless of the number -- of unnamed template parameters, so use this function for frame.args. ------------------------------------------------------------------------------------ function p.length(t, prefix) -- requiring module inline so that [[Module:Exponential search]] which is -- only needed by this one function doesn't get millions of transclusions local expSearch = require("Module:Exponential search") checkType('length', 1, t, 'table') checkType('length', 2, prefix, 'string', true) return expSearch(function (i) local key if prefix then key = prefix .. tostring(i) else key = i end return t[key] ~= nil end) or 0 end ------------------------------------------------------------------------------------ -- inArray -- -- Returns true if valueToFind is a member of the array, and false otherwise. ------------------------------------------------------------------------------------ function p.inArray(arr, valueToFind) checkType("inArray", 1, arr, "table") -- if valueToFind is nil, error? for _, v in ipairs(arr) do if v == valueToFind then return true end end return false end return p 085e7094ac84eb0132ee65822cf3f69cd8ba3d81 Template:Tlx 10 186 366 365 2023-01-16T18:15:31Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki #REDIRECT [[Template:Template link expanded]] {{Redirect category shell| {{R from move}} }} 1fec988ceb46cb324af228aac45d7cd25fcc9008 Template:Template link expanded 10 187 368 367 2023-01-16T18:15:31Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki {{#Invoke:Template link general|main|code=on}}<noinclude> {{Documentation|1=Template:Tlg/doc |content = {{tlg/doc|tlx}} }} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 6c99696fee02f1da368ed20d2504e19bc15b1c13 Module:Template link general 828 188 370 369 2023-01-16T18:15:31Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain -- This implements Template:Tlg local getArgs = require('Module:Arguments').getArgs local p = {} -- Is a string non-empty? local function _ne(s) return s ~= nil and s ~= "" end local nw = mw.text.nowiki local function addTemplate(s) local i, _ = s:find(':', 1, true) if i == nil then return 'Template:' .. s end local ns = s:sub(1, i - 1) if ns == '' or mw.site.namespaces[ns] then return s else return 'Template:' .. s end end local function trimTemplate(s) local needle = 'template:' if s:sub(1, needle:len()):lower() == needle then return s:sub(needle:len() + 1) else return s end end local function linkTitle(args) if _ne(args.nolink) then return args['1'] end local titleObj local titlePart = '[[' if args['1'] then -- This handles :Page and other NS titleObj = mw.title.new(args['1'], 'Template') else titleObj = mw.title.getCurrentTitle() end titlePart = titlePart .. (titleObj ~= nil and titleObj.fullText or addTemplate(args['1'])) local textPart = args.alttext if not _ne(textPart) then if titleObj ~= nil then textPart = titleObj:inNamespace("Template") and args['1'] or titleObj.fullText else -- redlink textPart = args['1'] end end if _ne(args.subst) then -- HACK: the ns thing above is probably broken textPart = 'subst:' .. textPart end if _ne(args.brace) then textPart = nw('{{') .. textPart .. nw('}}') elseif _ne(args.braceinside) then textPart = nw('{') .. textPart .. nw('}') end titlePart = titlePart .. '|' .. textPart .. ']]' if _ne(args.braceinside) then titlePart = nw('{') .. titlePart .. nw('}') end return titlePart end function p.main(frame) local args = getArgs(frame, { trim = true, removeBlanks = false }) return p._main(args) end function p._main(args) local bold = _ne(args.bold) or _ne(args.boldlink) or _ne(args.boldname) local italic = _ne(args.italic) or _ne(args.italics) local dontBrace = _ne(args.brace) or _ne(args.braceinside) local code = _ne(args.code) or _ne(args.tt) local show_result = _ne(args._show_result) local expand = _ne(args._expand) -- Build the link part local titlePart = linkTitle(args) if bold then titlePart = "'''" .. titlePart .. "'''" end if _ne(args.nowrapname) then titlePart = '<span class="nowrap">' .. titlePart .. '</span>' end -- Build the arguments local textPart = "" local textPartBuffer = "&#124;" local codeArguments = {} local codeArgumentsString = "" local i = 2 local j = 1 while args[i] do local val = args[i] if val ~= "" then if _ne(args.nowiki) then -- Unstrip nowiki tags first because calling nw on something that already contains nowiki tags will -- mangle the nowiki strip marker and result in literal UNIQ...QINU showing up val = nw(mw.text.unstripNoWiki(val)) end local k, v = string.match(val, "(.*)=(.*)") if not k then codeArguments[j] = val j = j + 1 else codeArguments[k] = v end codeArgumentsString = codeArgumentsString .. textPartBuffer .. val if italic then val = '<span style="font-style:italic;">' .. val .. '</span>' end textPart = textPart .. textPartBuffer .. val end i = i + 1 end -- final wrap local ret = titlePart .. textPart if not dontBrace then ret = nw('{{') .. ret .. nw('}}') end if _ne(args.a) then ret = nw('*') .. '&nbsp;' .. ret end if _ne(args.kbd) then ret = '<kbd>' .. ret .. '</kbd>' end if code then ret = '<code>' .. ret .. '</code>' elseif _ne(args.plaincode) then ret = '<code style="border:none;background:transparent;">' .. ret .. '</code>' end if _ne(args.nowrap) then ret = '<span class="nowrap">' .. ret .. '</span>' end --[[ Wrap as html?? local span = mw.html.create('span') span:wikitext(ret) --]] if _ne(args.debug) then ret = ret .. '\n<pre>' .. mw.text.encode(mw.dumpObject(args)) .. '</pre>' end if show_result then local result = mw.getCurrentFrame():expandTemplate{title = addTemplate(args[1]), args = codeArguments} ret = ret .. " → " .. result end if expand then local query = mw.text.encode('{{' .. addTemplate(args[1]) .. string.gsub(codeArgumentsString, textPartBuffer, "|") .. '}}') local url = mw.uri.fullUrl('special:ExpandTemplates', 'wpInput=' .. query) mw.log() ret = ret .. " [" .. tostring(url) .. "]" end return ret end return p c7307fa3959d308a2dd7fd2f5009c1ce6db3d122 Template:Template other 10 189 372 371 2023-01-16T18:15:32Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:Template}} | template | other }} }} | template = {{{1|}}} | other | #default = {{{2|}}} }}<!--End switch--><noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 06fb13d264df967b5232141067eb7d2b67372d76 Template:Clear 10 84 374 167 2023-01-16T18:15:32Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki <includeonly><div style="clear:{{{1|both}}}"></div></includeonly><noinclude> {{documentation}}</noinclude> 02f4c0e17d50c41f902cad74e6d937f585ba4719 Template:Distinguish 10 190 376 375 2023-01-16T18:15:33Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki {{#invoke:Distinguish|distinguish}}<noinclude><!-- splitting these lines causes {{Documentation}} template to terminate green shading when Distinguish is used in /doc pages. --> {{Documentation}} <!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! --> </noinclude> f949a4cbfd6eb0ab77b832e69059a40a964b1fd8 Template:Sidebar 10 191 378 377 2023-01-16T18:15:33Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki {{#invoke:Sidebar|sidebar}}<noinclude> {{documentation}}</noinclude> ab2498000a99daf324f656b0badd187b4a3e2b42 Module:Distinguish 828 192 380 379 2023-01-16T18:15:33Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain local mHatnote = require('Module:Hatnote') local mHatlist = require('Module:Hatnote list') local mArguments --initialize lazily local mTableTools --initialize lazily local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local p = {} function p.distinguish(frame) mArguments = require('Module:Arguments') mTableTools = require('Module:TableTools') local args = mArguments.getArgs(frame) local selfref = args.selfref local text = args.text args = mTableTools.compressSparseArray(args) return p._distinguish(args, text, selfref) end function p._distinguish(args, text, selfref) checkType("_distinguish", 1, args, 'table') if #args == 0 and not text then return '' end local text = string.format( 'Not to be confused with %s.', text or mHatlist.orList(args, true) ) hnOptions = {selfref = selfref} return mHatnote._hatnote(text, hnOptions) end return p 0364d14af01fc656ad1d898c5036fbd12a7ca938 Module:Effective protection expiry 828 193 382 381 2023-01-16T18:15:34Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain local p = {} -- Returns the expiry of a restriction of an action on a given title, or unknown if it cannot be known. -- If no title is specified, the title of the page being displayed is used. function p._main(action, pagename) local title if type(pagename) == 'table' and pagename.prefixedText then title = pagename elseif pagename then title = mw.title.new(pagename) else title = mw.title.getCurrentTitle() end pagename = title.prefixedText if action == 'autoreview' then local stabilitySettings = mw.ext.FlaggedRevs.getStabilitySettings(title) return stabilitySettings and stabilitySettings.expiry or 'unknown' elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' then error( 'First parameter must be one of edit, move, create, upload, autoreview', 2 ) end local rawExpiry = mw.getCurrentFrame():callParserFunction('PROTECTIONEXPIRY', action, pagename) if rawExpiry == 'infinity' then return 'infinity' elseif rawExpiry == '' then return 'unknown' else local year, month, day, hour, minute, second = rawExpiry:match( '^(%d%d%d%d)(%d%d)(%d%d)(%d%d)(%d%d)(%d%d)$' ) if year then return string.format( '%s-%s-%sT%s:%s:%s', year, month, day, hour, minute, second ) else error('internal error in Module:Effective protection expiry; malformed expiry timestamp') end end end setmetatable(p, { __index = function(t, k) return function(frame) return t._main(k, frame.args[1]) end end }) return p 9a8c58dc2667232ed08a9b206a5d89ca8150312b Module:Effective protection level 828 194 384 383 2023-01-16T18:15:34Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain local p = {} -- Returns the permission required to perform a given action on a given title. -- If no title is specified, the title of the page being displayed is used. function p._main(action, pagename) local title if type(pagename) == 'table' and pagename.prefixedText then title = pagename elseif pagename then title = mw.title.new(pagename) else title = mw.title.getCurrentTitle() end pagename = title.prefixedText if action == 'autoreview' then local level = mw.ext.FlaggedRevs.getStabilitySettings(title) level = level and level.autoreview if level == 'review' then return 'reviewer' elseif level ~= '' then return level else return nil -- not '*'. a page not being PC-protected is distinct from it being PC-protected with anyone able to review. also not '', as that would mean PC-protected but nobody can review end elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' and action ~= 'undelete' then error( 'First parameter must be one of edit, move, create, upload, undelete, autoreview', 2 ) end if title.namespace == 8 then -- MediaWiki namespace if title.text:sub(-3) == '.js' or title.text:sub(-4) == '.css' or title.contentModel == 'javascript' or title.contentModel == 'css' then -- site JS or CSS page return 'interfaceadmin' else -- any non-JS/CSS MediaWiki page return 'sysop' end elseif title.namespace == 2 and title.isSubpage then if title.contentModel == 'javascript' or title.contentModel == 'css' then -- user JS or CSS page return 'interfaceadmin' elseif title.contentModel == 'json' then -- user JSON page return 'sysop' end end if action == 'undelete' then return 'sysop' end local level = title.protectionLevels[action] and title.protectionLevels[action][1] if level == 'sysop' or level == 'editprotected' then return 'sysop' elseif title.cascadingProtection.restrictions[action] and title.cascadingProtection.restrictions[action][1] then -- used by a cascading-protected page return 'sysop' elseif level == 'templateeditor' then return 'templateeditor' elseif action == 'move' then local blacklistentry = mw.ext.TitleBlacklist.test('edit', pagename) -- Testing action edit is correct, since this is for the source page. The target page name gets tested with action move. if blacklistentry and not blacklistentry.params.autoconfirmed then return 'templateeditor' elseif title.namespace == 6 then return 'filemover' elseif level == 'extendedconfirmed' then return 'extendedconfirmed' else return 'autoconfirmed' end end local blacklistentry = mw.ext.TitleBlacklist.test(action, pagename) if blacklistentry then if not blacklistentry.params.autoconfirmed then return 'templateeditor' elseif level == 'extendedconfirmed' then return 'extendedconfirmed' else return 'autoconfirmed' end elseif level == 'editsemiprotected' then -- create-semiprotected pages return this for some reason return 'autoconfirmed' elseif level then return level elseif action == 'upload' then return 'autoconfirmed' elseif action == 'create' and title.namespace % 2 == 0 and title.namespace ~= 118 then -- You need to be registered, but not autoconfirmed, to create non-talk pages other than drafts return 'user' else return '*' end end setmetatable(p, { __index = function(t, k) return function(frame) return t._main(k, frame.args[1]) end end }) return p 70256a489edf6be9808031b14a7e3ef3e025da97 Module:File link 828 195 386 385 2023-01-16T18:15:35Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain -- This module provides a library for formatting file wikilinks. local yesno = require('Module:Yesno') local checkType = require('libraryUtil').checkType local p = {} function p._main(args) checkType('_main', 1, args, 'table') -- This is basically libraryUtil.checkTypeForNamedArg, but we are rolling our -- own function to get the right error level. local function checkArg(key, val, level) if type(val) ~= 'string' then error(string.format( "type error in '%s' parameter of '_main' (expected string, got %s)", key, type(val) ), level) end end local ret = {} -- Adds a positional parameter to the buffer. local function addPositional(key) local val = args[key] if not val then return nil end checkArg(key, val, 4) ret[#ret + 1] = val end -- Adds a named parameter to the buffer. We assume that the parameter name -- is the same as the argument key. local function addNamed(key) local val = args[key] if not val then return nil end checkArg(key, val, 4) ret[#ret + 1] = key .. '=' .. val end -- Filename checkArg('file', args.file, 3) ret[#ret + 1] = 'File:' .. args.file -- Format if args.format then checkArg('format', args.format) if args.formatfile then checkArg('formatfile', args.formatfile) ret[#ret + 1] = args.format .. '=' .. args.formatfile else ret[#ret + 1] = args.format end end -- Border if yesno(args.border) then ret[#ret + 1] = 'border' end addPositional('location') addPositional('alignment') addPositional('size') addNamed('upright') addNamed('link') addNamed('alt') addNamed('page') addNamed('class') addNamed('lang') addNamed('start') addNamed('end') addNamed('thumbtime') addPositional('caption') return string.format('[[%s]]', table.concat(ret, '|')) end function p.main(frame) local origArgs = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:File link' }) if not origArgs.file then error("'file' parameter missing from [[Template:File link]]", 0) end -- Copy the arguments that were passed to a new table to avoid looking up -- every possible parameter in the frame object. local args = {} for k, v in pairs(origArgs) do -- Make _BLANK a special argument to add a blank parameter. For use in -- conditional templates etc. it is useful for blank arguments to be -- ignored, but we still need a way to specify them so that we can do -- things like [[File:Example.png|link=]]. if v == '_BLANK' then v = '' end args[k] = v end return p._main(args) end return p 66925f088d11530f2482f04181a3baaaa0ad3d0c Module:Format link 828 196 388 387 2023-01-16T18:15:35Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain -------------------------------------------------------------------------------- -- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the {{format link}} template. -------------------------------------------------------------------------------- local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg local mArguments -- lazily initialise [[Module:Arguments]] local mError -- lazily initialise [[Module:Error]] local yesno -- lazily initialise [[Module:Yesno]] local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end local function maybeItalicize(s, shouldItalicize) -- Italicize s if s is a string and the shouldItalicize parameter is true. if s and shouldItalicize then return '<i>' .. s .. '</i>' else return s end end local function parseLink(link) -- Parse a link and return a table with the link's components. -- These components are: -- - link: the link, stripped of any initial colon (always present) -- - page: the page name (always present) -- - section: the page name (may be nil) -- - display: the display text, if manually entered after a pipe (may be nil) link = removeInitialColon(link) -- Find whether a faux display value has been added with the {{!}} magic -- word. local prePipe, display = link:match('^(.-)|(.*)$') link = prePipe or link -- Find the page, if it exists. -- For links like [[#Bar]], the page will be nil. local preHash, postHash = link:match('^(.-)#(.*)$') local page if not preHash then -- We have a link like [[Foo]]. page = link elseif preHash ~= '' then -- We have a link like [[Foo#Bar]]. page = preHash end -- Find the section, if it exists. local section if postHash and postHash ~= '' then section = postHash end return { link = link, page = page, section = section, display = display, } end local function formatDisplay(parsed, options) -- Formats a display string based on a parsed link table (matching the -- output of parseLink) and an options table (matching the input options for -- _formatLink). local page = maybeItalicize(parsed.page, options.italicizePage) local section = maybeItalicize(parsed.section, options.italicizeSection) if (not section) then return page elseif (not page) then return mw.ustring.format('§&nbsp;%s', section) else return mw.ustring.format('%s §&nbsp;%s', page, section) end end local function missingArgError(target) mError = require('Module:Error') return mError.error{message = 'Error: no link or target specified! ([[' .. target .. '#Errors|help]])' } end -------------------------------------------------------------------------------- -- Main functions -------------------------------------------------------------------------------- function p.formatLink(frame) -- The formatLink export function, for use in templates. yesno = require('Module:Yesno') local args = getArgs(frame) local link = args[1] or args.link local target = args[3] or args.target if not (link or target) then return missingArgError('Template:Format link') end return p._formatLink{ link = link, display = args[2] or args.display, target = target, italicizePage = yesno(args.italicizepage), italicizeSection = yesno(args.italicizesection), categorizeMissing = args.categorizemissing } end function p._formatLink(options) -- The formatLink export function, for use in modules. checkType('_formatLink', 1, options, 'table') local function check(key, expectedType) --for brevity checkTypeForNamedArg( '_formatLink', key, options[key], expectedType or 'string', true ) end check('link') check('display') check('target') check('italicizePage', 'boolean') check('italicizeSection', 'boolean') check('categorizeMissing') -- Normalize link and target and check that at least one is present if options.link == '' then options.link = nil end if options.target == '' then options.target = nil end if not (options.link or options.target) then return missingArgError('Module:Format link') end local parsed = parseLink(options.link) local display = options.display or parsed.display local catMissing = options.categorizeMissing local category = '' -- Find the display text if not display then display = formatDisplay(parsed, options) end -- Handle the target option if present if options.target then local parsedTarget = parseLink(options.target) parsed.link = parsedTarget.link parsed.page = parsedTarget.page end -- Test if page exists if a diagnostic category is specified if catMissing and (mw.ustring.len(catMissing) > 0) then local title = nil if parsed.page then title = mw.title.new(parsed.page) end if title and (not title.isExternal) then local success, exists = pcall(function() return title.exists end) if success and not exists then category = mw.ustring.format('[[Category:%s]]', catMissing) end end end -- Format the result as a link if parsed.link == display then return mw.ustring.format('[[:%s]]%s', parsed.link, category) else return mw.ustring.format('[[:%s|%s]]%s', parsed.link, display, category) end end -------------------------------------------------------------------------------- -- Derived convenience functions -------------------------------------------------------------------------------- function p.formatPages(options, pages) -- Formats an array of pages using formatLink and the given options table, -- and returns it as an array. Nil values are not allowed. local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink{ link = page, categorizeMissing = options.categorizeMissing, italicizePage = options.italicizePage, italicizeSection = options.italicizeSection } end return ret end return p 1253bdd2683ee4badc33856bfd5499b09a7dca1f Module:Hatnote 828 70 390 139 2023-01-16T18:15:35Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Hatnote module from the [[w:c:dev:Global Lua Modules]]. local H = require('Dev:Hatnote') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Hatnote]] -- The last line produces the output for the template return H d52966e186d4771ee7844be7f402467c51644349 Module:Hatnote/styles.css 828 197 392 391 2023-01-16T18:15:36Z BEELETH 2 1 revision imported: Import from Wikipedia text text/plain /* {{pp|small=y}} */ .hatnote { font-style: italic; } /* Limit structure CSS to divs because of [[Module:Hatnote inline]] */ div.hatnote { /* @noflip */ padding-left: 1.6em; margin-bottom: 0.5em; } .hatnote i { font-style: normal; } /* The templatestyles element inserts a link element before hatnotes. * TODO: Remove link if/when WMF resolves T200206 */ .hatnote + link + .hatnote { margin-top: -0.5em; } 44680ffd6e888866df2cdfa0341af9c7b97da94c Module:Hatnote list 828 198 394 393 2023-01-16T18:15:36Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain -------------------------------------------------------------------------------- -- Module:Hatnote list -- -- -- -- This module produces and formats lists for use in hatnotes. In particular, -- -- it implements the for-see list, i.e. lists of "For X, see Y" statements, -- -- as used in {{about}}, {{redirect}}, and their variants. Also introduced -- -- are andList & orList helpers for formatting lists with those conjunctions. -- -------------------------------------------------------------------------------- local mArguments --initialize lazily local mFormatLink = require('Module:Format link') local mHatnote = require('Module:Hatnote') local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local p = {} -------------------------------------------------------------------------------- -- List stringification helper functions -- -- These functions are used for stringifying lists, usually page lists inside -- the "Y" portion of "For X, see Y" for-see items. -------------------------------------------------------------------------------- --default options table used across the list stringification functions local stringifyListDefaultOptions = { conjunction = "and", separator = ",", altSeparator = ";", space = " ", formatted = false } --Searches display text only local function searchDisp(haystack, needle) return string.find( string.sub(haystack, (string.find(haystack, '|') or 0) + 1), needle ) end -- Stringifies a list generically; probably shouldn't be used directly local function stringifyList(list, options) -- Type-checks, defaults, and a shortcut checkType("stringifyList", 1, list, "table") if #list == 0 then return nil end checkType("stringifyList", 2, options, "table", true) options = options or {} for k, v in pairs(stringifyListDefaultOptions) do if options[k] == nil then options[k] = v end end local s = options.space -- Format the list if requested if options.formatted then list = mFormatLink.formatPages( {categorizeMissing = mHatnote.missingTargetCat}, list ) end -- Set the separator; if any item contains it, use the alternate separator local separator = options.separator for k, v in pairs(list) do if searchDisp(v, separator) then separator = options.altSeparator break end end -- Set the conjunction, apply Oxford comma, and force a comma if #1 has "§" local conjunction = s .. options.conjunction .. s if #list == 2 and searchDisp(list[1], "§") or #list > 2 then conjunction = separator .. conjunction end -- Return the formatted string return mw.text.listToText(list, separator .. s, conjunction) end --DRY function function p.conjList (conj, list, fmt) return stringifyList(list, {conjunction = conj, formatted = fmt}) end -- Stringifies lists with "and" or "or" function p.andList (...) return p.conjList("and", ...) end function p.orList (...) return p.conjList("or", ...) end -------------------------------------------------------------------------------- -- For see -- -- Makes a "For X, see [[Y]]." list from raw parameters. Intended for the -- {{about}} and {{redirect}} templates and their variants. -------------------------------------------------------------------------------- --default options table used across the forSee family of functions local forSeeDefaultOptions = { andKeyword = 'and', title = mw.title.getCurrentTitle().text, otherText = 'other uses', forSeeForm = 'For %s, see %s.', } --Collapses duplicate punctuation local function punctuationCollapse (text) local replacements = { ["%.%.$"] = ".", ["%?%.$"] = "?", ["%!%.$"] = "!", ["%.%]%]%.$"] = ".]]", ["%?%]%]%.$"] = "?]]", ["%!%]%]%.$"] = "!]]" } for k, v in pairs(replacements) do text = string.gsub(text, k, v) end return text end -- Structures arguments into a table for stringification, & options function p.forSeeArgsToTable (args, from, options) -- Type-checks and defaults checkType("forSeeArgsToTable", 1, args, 'table') checkType("forSeeArgsToTable", 2, from, 'number', true) from = from or 1 checkType("forSeeArgsToTable", 3, options, 'table', true) options = options or {} for k, v in pairs(forSeeDefaultOptions) do if options[k] == nil then options[k] = v end end -- maxArg's gotten manually because getArgs() and table.maxn aren't friends local maxArg = 0 for k, v in pairs(args) do if type(k) == 'number' and k > maxArg then maxArg = k end end -- Structure the data out from the parameter list: -- * forTable is the wrapper table, with forRow rows -- * Rows are tables of a "use" string & a "pages" table of pagename strings -- * Blanks are left empty for defaulting elsewhere, but can terminate list local forTable = {} local i = from local terminated = false -- If there is extra text, and no arguments are given, give nil value -- to not produce default of "For other uses, see foo (disambiguation)" if options.extratext and i > maxArg then return nil end -- Loop to generate rows repeat -- New empty row local forRow = {} -- On blank use, assume list's ended & break at end of this loop forRow.use = args[i] if not args[i] then terminated = true end -- New empty list of pages forRow.pages = {} -- Insert first pages item if present table.insert(forRow.pages, args[i + 1]) -- If the param after next is "and", do inner loop to collect params -- until the "and"'s stop. Blanks are ignored: "1|and||and|3" → {1, 3} while args[i + 2] == options.andKeyword do if args[i + 3] then table.insert(forRow.pages, args[i + 3]) end -- Increment to next "and" i = i + 2 end -- Increment to next use i = i + 2 -- Append the row table.insert(forTable, forRow) until terminated or i > maxArg return forTable end -- Stringifies a table as formatted by forSeeArgsToTable function p.forSeeTableToString (forSeeTable, options) -- Type-checks and defaults checkType("forSeeTableToString", 1, forSeeTable, "table", true) checkType("forSeeTableToString", 2, options, "table", true) options = options or {} for k, v in pairs(forSeeDefaultOptions) do if options[k] == nil then options[k] = v end end -- Stringify each for-see item into a list local strList = {} if forSeeTable then for k, v in pairs(forSeeTable) do local useStr = v.use or options.otherText local pagesStr = p.andList(v.pages, true) or mFormatLink._formatLink{ categorizeMissing = mHatnote.missingTargetCat, link = mHatnote.disambiguate(options.title) } local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr) forSeeStr = punctuationCollapse(forSeeStr) table.insert(strList, forSeeStr) end end if options.extratext then table.insert(strList, punctuationCollapse(options.extratext..'.')) end -- Return the concatenated list return table.concat(strList, ' ') end -- Produces a "For X, see [[Y]]" string from arguments. Expects index gaps -- but not blank/whitespace values. Ignores named args and args < "from". function p._forSee (args, from, options) local forSeeTable = p.forSeeArgsToTable(args, from, options) return p.forSeeTableToString(forSeeTable, options) end -- As _forSee, but uses the frame. function p.forSee (frame, from, options) mArguments = require('Module:Arguments') return p._forSee(mArguments.getArgs(frame), from, options) end return p d0828422b1aa0d0d0092d699d059c9e882260398 Module:Navbar/styles.css 828 201 400 399 2023-01-16T18:15:37Z BEELETH 2 1 revision imported: Import from Wikipedia text text/plain /* {{pp|small=yes}} */ .navbar { display: inline; font-size: 88%; font-weight: normal; } .navbar-collapse { float: left; text-align: left; } .navbar-boxtext { word-spacing: 0; } .navbar ul { display: inline-block; white-space: nowrap; line-height: inherit; } .navbar-brackets::before { margin-right: -0.125em; content: '[ '; } .navbar-brackets::after { margin-left: -0.125em; content: ' ]'; } .navbar li { word-spacing: -0.125em; } .navbar a > span, .navbar a > abbr { text-decoration: inherit; } .navbar-mini abbr { font-variant: small-caps; border-bottom: none; text-decoration: none; cursor: inherit; } .navbar-ct-full { font-size: 114%; margin: 0 7em; } .navbar-ct-mini { font-size: 114%; margin: 0 4em; } 9d4056f949b4f0b159e3d40dfb1a5f01e72f9571 Module:Protection banner 828 202 402 401 2023-01-16T18:15:38Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain -- This module implements {{pp-meta}} and its daughter templates such as -- {{pp-dispute}}, {{pp-vandalism}} and {{pp-sock}}. -- Initialise necessary modules. require('strict') local makeFileLink = require('Module:File link')._main local effectiveProtectionLevel = require('Module:Effective protection level')._main local effectiveProtectionExpiry = require('Module:Effective protection expiry')._main local yesno = require('Module:Yesno') -- Lazily initialise modules and objects we don't always need. local getArgs, makeMessageBox, lang -- Set constants. local CONFIG_MODULE = 'Module:Protection banner/config' -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function makeCategoryLink(cat, sort) if cat then return string.format( '[[%s:%s|%s]]', mw.site.namespaces[14].name, cat, sort ) end end -- Validation function for the expiry and the protection date local function validateDate(dateString, dateType) if not lang then lang = mw.language.getContentLanguage() end local success, result = pcall(lang.formatDate, lang, 'U', dateString) if success then result = tonumber(result) if result then return result end end error(string.format( 'invalid %s: %s', dateType, tostring(dateString) ), 4) end local function makeFullUrl(page, query, display) return string.format( '[%s %s]', tostring(mw.uri.fullUrl(page, query)), display ) end -- Given a directed graph formatted as node -> table of direct successors, -- get a table of all nodes reachable from a given node (though always -- including the given node). local function getReachableNodes(graph, start) local toWalk, retval = {[start] = true}, {} while true do -- Can't use pairs() since we're adding and removing things as we're iterating local k = next(toWalk) -- This always gets the "first" key if k == nil then return retval end toWalk[k] = nil retval[k] = true for _,v in ipairs(graph[k]) do if not retval[v] then toWalk[v] = true end end end end -------------------------------------------------------------------------------- -- Protection class -------------------------------------------------------------------------------- local Protection = {} Protection.__index = Protection Protection.supportedActions = { edit = true, move = true, autoreview = true, upload = true } Protection.bannerConfigFields = { 'text', 'explanation', 'tooltip', 'alt', 'link', 'image' } function Protection.new(args, cfg, title) local obj = {} obj._cfg = cfg obj.title = title or mw.title.getCurrentTitle() -- Set action if not args.action then obj.action = 'edit' elseif Protection.supportedActions[args.action] then obj.action = args.action else error(string.format( 'invalid action: %s', tostring(args.action) ), 3) end -- Set level obj.level = args.demolevel or effectiveProtectionLevel(obj.action, obj.title) if not obj.level or (obj.action == 'move' and obj.level == 'autoconfirmed') then -- Users need to be autoconfirmed to move pages anyway, so treat -- semi-move-protected pages as unprotected. obj.level = '*' end -- Set expiry local effectiveExpiry = effectiveProtectionExpiry(obj.action, obj.title) if effectiveExpiry == 'infinity' then obj.expiry = 'indef' elseif effectiveExpiry ~= 'unknown' then obj.expiry = validateDate(effectiveExpiry, 'expiry date') end -- Set reason if args[1] then obj.reason = mw.ustring.lower(args[1]) if obj.reason:find('|') then error('reasons cannot contain the pipe character ("|")', 3) end end -- Set protection date if args.date then obj.protectionDate = validateDate(args.date, 'protection date') end -- Set banner config do obj.bannerConfig = {} local configTables = {} if cfg.banners[obj.action] then configTables[#configTables + 1] = cfg.banners[obj.action][obj.reason] end if cfg.defaultBanners[obj.action] then configTables[#configTables + 1] = cfg.defaultBanners[obj.action][obj.level] configTables[#configTables + 1] = cfg.defaultBanners[obj.action].default end configTables[#configTables + 1] = cfg.masterBanner for i, field in ipairs(Protection.bannerConfigFields) do for j, t in ipairs(configTables) do if t[field] then obj.bannerConfig[field] = t[field] break end end end end return setmetatable(obj, Protection) end function Protection:isUserScript() -- Whether the page is a user JavaScript or CSS page. local title = self.title return title.namespace == 2 and ( title.contentModel == 'javascript' or title.contentModel == 'css' ) end function Protection:isProtected() return self.level ~= '*' end function Protection:shouldShowLock() -- Whether we should output a banner/padlock return self:isProtected() and not self:isUserScript() end -- Whether this page needs a protection category. Protection.shouldHaveProtectionCategory = Protection.shouldShowLock function Protection:isTemporary() return type(self.expiry) == 'number' end function Protection:makeProtectionCategory() if not self:shouldHaveProtectionCategory() then return '' end local cfg = self._cfg local title = self.title -- Get the expiry key fragment. local expiryFragment if self.expiry == 'indef' then expiryFragment = self.expiry elseif type(self.expiry) == 'number' then expiryFragment = 'temp' end -- Get the namespace key fragment. local namespaceFragment = cfg.categoryNamespaceKeys[title.namespace] if not namespaceFragment and title.namespace % 2 == 1 then namespaceFragment = 'talk' end -- Define the order that key fragments are tested in. This is done with an -- array of tables containing the value to be tested, along with its -- position in the cfg.protectionCategories table. local order = { {val = expiryFragment, keypos = 1}, {val = namespaceFragment, keypos = 2}, {val = self.reason, keypos = 3}, {val = self.level, keypos = 4}, {val = self.action, keypos = 5} } --[[ -- The old protection templates used an ad-hoc protection category system, -- with some templates prioritising namespaces in their categories, and -- others prioritising the protection reason. To emulate this in this module -- we use the config table cfg.reasonsWithNamespacePriority to set the -- reasons for which namespaces have priority over protection reason. -- If we are dealing with one of those reasons, move the namespace table to -- the end of the order table, i.e. give it highest priority. If not, the -- reason should have highest priority, so move that to the end of the table -- instead. --]] table.insert(order, table.remove(order, self.reason and cfg.reasonsWithNamespacePriority[self.reason] and 2 or 3)) --[[ -- Define the attempt order. Inactive subtables (subtables with nil "value" -- fields) are moved to the end, where they will later be given the key -- "all". This is to cut down on the number of table lookups in -- cfg.protectionCategories, which grows exponentially with the number of -- non-nil keys. We keep track of the number of active subtables with the -- noActive parameter. --]] local noActive, attemptOrder do local active, inactive = {}, {} for i, t in ipairs(order) do if t.val then active[#active + 1] = t else inactive[#inactive + 1] = t end end noActive = #active attemptOrder = active for i, t in ipairs(inactive) do attemptOrder[#attemptOrder + 1] = t end end --[[ -- Check increasingly generic key combinations until we find a match. If a -- specific category exists for the combination of key fragments we are -- given, that match will be found first. If not, we keep trying different -- key fragment combinations until we match using the key -- "all-all-all-all-all". -- -- To generate the keys, we index the key subtables using a binary matrix -- with indexes i and j. j is only calculated up to the number of active -- subtables. For example, if there were three active subtables, the matrix -- would look like this, with 0 corresponding to the key fragment "all", and -- 1 corresponding to other key fragments. -- -- j 1 2 3 -- i -- 1 1 1 1 -- 2 0 1 1 -- 3 1 0 1 -- 4 0 0 1 -- 5 1 1 0 -- 6 0 1 0 -- 7 1 0 0 -- 8 0 0 0 -- -- Values of j higher than the number of active subtables are set -- to the string "all". -- -- A key for cfg.protectionCategories is constructed for each value of i. -- The position of the value in the key is determined by the keypos field in -- each subtable. --]] local cats = cfg.protectionCategories for i = 1, 2^noActive do local key = {} for j, t in ipairs(attemptOrder) do if j > noActive then key[t.keypos] = 'all' else local quotient = i / 2 ^ (j - 1) quotient = math.ceil(quotient) if quotient % 2 == 1 then key[t.keypos] = t.val else key[t.keypos] = 'all' end end end key = table.concat(key, '|') local attempt = cats[key] if attempt then return makeCategoryLink(attempt, title.text) end end return '' end function Protection:isIncorrect() local expiry = self.expiry return not self:shouldHaveProtectionCategory() or type(expiry) == 'number' and expiry < os.time() end function Protection:isTemplateProtectedNonTemplate() local action, namespace = self.action, self.title.namespace return self.level == 'templateeditor' and ( (action ~= 'edit' and action ~= 'move') or (namespace ~= 10 and namespace ~= 828) ) end function Protection:makeCategoryLinks() local msg = self._cfg.msg local ret = {self:makeProtectionCategory()} if self:isIncorrect() then ret[#ret + 1] = makeCategoryLink( msg['tracking-category-incorrect'], self.title.text ) end if self:isTemplateProtectedNonTemplate() then ret[#ret + 1] = makeCategoryLink( msg['tracking-category-template'], self.title.text ) end return table.concat(ret) end -------------------------------------------------------------------------------- -- Blurb class -------------------------------------------------------------------------------- local Blurb = {} Blurb.__index = Blurb Blurb.bannerTextFields = { text = true, explanation = true, tooltip = true, alt = true, link = true } function Blurb.new(protectionObj, args, cfg) return setmetatable({ _cfg = cfg, _protectionObj = protectionObj, _args = args }, Blurb) end -- Private methods -- function Blurb:_formatDate(num) -- Formats a Unix timestamp into dd Month, YYYY format. lang = lang or mw.language.getContentLanguage() local success, date = pcall( lang.formatDate, lang, self._cfg.msg['expiry-date-format'] or 'j F Y', '@' .. tostring(num) ) if success then return date end end function Blurb:_getExpandedMessage(msgKey) return self:_substituteParameters(self._cfg.msg[msgKey]) end function Blurb:_substituteParameters(msg) if not self._params then local parameterFuncs = {} parameterFuncs.CURRENTVERSION = self._makeCurrentVersionParameter parameterFuncs.EDITREQUEST = self._makeEditRequestParameter parameterFuncs.EXPIRY = self._makeExpiryParameter parameterFuncs.EXPLANATIONBLURB = self._makeExplanationBlurbParameter parameterFuncs.IMAGELINK = self._makeImageLinkParameter parameterFuncs.INTROBLURB = self._makeIntroBlurbParameter parameterFuncs.INTROFRAGMENT = self._makeIntroFragmentParameter parameterFuncs.PAGETYPE = self._makePagetypeParameter parameterFuncs.PROTECTIONBLURB = self._makeProtectionBlurbParameter parameterFuncs.PROTECTIONDATE = self._makeProtectionDateParameter parameterFuncs.PROTECTIONLEVEL = self._makeProtectionLevelParameter parameterFuncs.PROTECTIONLOG = self._makeProtectionLogParameter parameterFuncs.TALKPAGE = self._makeTalkPageParameter parameterFuncs.TOOLTIPBLURB = self._makeTooltipBlurbParameter parameterFuncs.TOOLTIPFRAGMENT = self._makeTooltipFragmentParameter parameterFuncs.VANDAL = self._makeVandalTemplateParameter self._params = setmetatable({}, { __index = function (t, k) local param if parameterFuncs[k] then param = parameterFuncs[k](self) end param = param or '' t[k] = param return param end }) end msg = msg:gsub('${(%u+)}', self._params) return msg end function Blurb:_makeCurrentVersionParameter() -- A link to the page history or the move log, depending on the kind of -- protection. local pagename = self._protectionObj.title.prefixedText if self._protectionObj.action == 'move' then -- We need the move log link. return makeFullUrl( 'Special:Log', {type = 'move', page = pagename}, self:_getExpandedMessage('current-version-move-display') ) else -- We need the history link. return makeFullUrl( pagename, {action = 'history'}, self:_getExpandedMessage('current-version-edit-display') ) end end function Blurb:_makeEditRequestParameter() local mEditRequest = require('Module:Submit an edit request') local action = self._protectionObj.action local level = self._protectionObj.level -- Get the edit request type. local requestType if action == 'edit' then if level == 'autoconfirmed' then requestType = 'semi' elseif level == 'extendedconfirmed' then requestType = 'extended' elseif level == 'templateeditor' then requestType = 'template' end end requestType = requestType or 'full' -- Get the display value. local display = self:_getExpandedMessage('edit-request-display') return mEditRequest._link{type = requestType, display = display} end function Blurb:_makeExpiryParameter() local expiry = self._protectionObj.expiry if type(expiry) == 'number' then return self:_formatDate(expiry) else return expiry end end function Blurb:_makeExplanationBlurbParameter() -- Cover special cases first. if self._protectionObj.title.namespace == 8 then -- MediaWiki namespace return self:_getExpandedMessage('explanation-blurb-nounprotect') end -- Get explanation blurb table keys local action = self._protectionObj.action local level = self._protectionObj.level local talkKey = self._protectionObj.title.isTalkPage and 'talk' or 'subject' -- Find the message in the explanation blurb table and substitute any -- parameters. local explanations = self._cfg.explanationBlurbs local msg if explanations[action][level] and explanations[action][level][talkKey] then msg = explanations[action][level][talkKey] elseif explanations[action][level] and explanations[action][level].default then msg = explanations[action][level].default elseif explanations[action].default and explanations[action].default[talkKey] then msg = explanations[action].default[talkKey] elseif explanations[action].default and explanations[action].default.default then msg = explanations[action].default.default else error(string.format( 'could not find explanation blurb for action "%s", level "%s" and talk key "%s"', action, level, talkKey ), 8) end return self:_substituteParameters(msg) end function Blurb:_makeImageLinkParameter() local imageLinks = self._cfg.imageLinks local action = self._protectionObj.action local level = self._protectionObj.level local msg if imageLinks[action][level] then msg = imageLinks[action][level] elseif imageLinks[action].default then msg = imageLinks[action].default else msg = imageLinks.edit.default end return self:_substituteParameters(msg) end function Blurb:_makeIntroBlurbParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('intro-blurb-expiry') else return self:_getExpandedMessage('intro-blurb-noexpiry') end end function Blurb:_makeIntroFragmentParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('intro-fragment-expiry') else return self:_getExpandedMessage('intro-fragment-noexpiry') end end function Blurb:_makePagetypeParameter() local pagetypes = self._cfg.pagetypes return pagetypes[self._protectionObj.title.namespace] or pagetypes.default or error('no default pagetype defined', 8) end function Blurb:_makeProtectionBlurbParameter() local protectionBlurbs = self._cfg.protectionBlurbs local action = self._protectionObj.action local level = self._protectionObj.level local msg if protectionBlurbs[action][level] then msg = protectionBlurbs[action][level] elseif protectionBlurbs[action].default then msg = protectionBlurbs[action].default elseif protectionBlurbs.edit.default then msg = protectionBlurbs.edit.default else error('no protection blurb defined for protectionBlurbs.edit.default', 8) end return self:_substituteParameters(msg) end function Blurb:_makeProtectionDateParameter() local protectionDate = self._protectionObj.protectionDate if type(protectionDate) == 'number' then return self:_formatDate(protectionDate) else return protectionDate end end function Blurb:_makeProtectionLevelParameter() local protectionLevels = self._cfg.protectionLevels local action = self._protectionObj.action local level = self._protectionObj.level local msg if protectionLevels[action][level] then msg = protectionLevels[action][level] elseif protectionLevels[action].default then msg = protectionLevels[action].default elseif protectionLevels.edit.default then msg = protectionLevels.edit.default else error('no protection level defined for protectionLevels.edit.default', 8) end return self:_substituteParameters(msg) end function Blurb:_makeProtectionLogParameter() local pagename = self._protectionObj.title.prefixedText if self._protectionObj.action == 'autoreview' then -- We need the pending changes log. return makeFullUrl( 'Special:Log', {type = 'stable', page = pagename}, self:_getExpandedMessage('pc-log-display') ) else -- We need the protection log. return makeFullUrl( 'Special:Log', {type = 'protect', page = pagename}, self:_getExpandedMessage('protection-log-display') ) end end function Blurb:_makeTalkPageParameter() return string.format( '[[%s:%s#%s|%s]]', mw.site.namespaces[self._protectionObj.title.namespace].talk.name, self._protectionObj.title.text, self._args.section or 'top', self:_getExpandedMessage('talk-page-link-display') ) end function Blurb:_makeTooltipBlurbParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('tooltip-blurb-expiry') else return self:_getExpandedMessage('tooltip-blurb-noexpiry') end end function Blurb:_makeTooltipFragmentParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('tooltip-fragment-expiry') else return self:_getExpandedMessage('tooltip-fragment-noexpiry') end end function Blurb:_makeVandalTemplateParameter() return mw.getCurrentFrame():expandTemplate{ title="vandal-m", args={self._args.user or self._protectionObj.title.baseText} } end -- Public methods -- function Blurb:makeBannerText(key) -- Validate input. if not key or not Blurb.bannerTextFields[key] then error(string.format( '"%s" is not a valid banner config field', tostring(key) ), 2) end -- Generate the text. local msg = self._protectionObj.bannerConfig[key] if type(msg) == 'string' then return self:_substituteParameters(msg) elseif type(msg) == 'function' then msg = msg(self._protectionObj, self._args) if type(msg) ~= 'string' then error(string.format( 'bad output from banner config function with key "%s"' .. ' (expected string, got %s)', tostring(key), type(msg) ), 4) end return self:_substituteParameters(msg) end end -------------------------------------------------------------------------------- -- BannerTemplate class -------------------------------------------------------------------------------- local BannerTemplate = {} BannerTemplate.__index = BannerTemplate function BannerTemplate.new(protectionObj, cfg) local obj = {} obj._cfg = cfg -- Set the image filename. local imageFilename = protectionObj.bannerConfig.image if imageFilename then obj._imageFilename = imageFilename else -- If an image filename isn't specified explicitly in the banner config, -- generate it from the protection status and the namespace. local action = protectionObj.action local level = protectionObj.level local namespace = protectionObj.title.namespace local reason = protectionObj.reason -- Deal with special cases first. if ( namespace == 10 or namespace == 828 or reason and obj._cfg.indefImageReasons[reason] ) and action == 'edit' and level == 'sysop' and not protectionObj:isTemporary() then -- Fully protected modules and templates get the special red "indef" -- padlock. obj._imageFilename = obj._cfg.msg['image-filename-indef'] else -- Deal with regular protection types. local images = obj._cfg.images if images[action] then if images[action][level] then obj._imageFilename = images[action][level] elseif images[action].default then obj._imageFilename = images[action].default end end end end return setmetatable(obj, BannerTemplate) end function BannerTemplate:renderImage() local filename = self._imageFilename or self._cfg.msg['image-filename-default'] or 'Transparent.gif' return makeFileLink{ file = filename, size = (self.imageWidth or 20) .. 'px', alt = self._imageAlt, link = self._imageLink, caption = self.imageCaption } end -------------------------------------------------------------------------------- -- Banner class -------------------------------------------------------------------------------- local Banner = setmetatable({}, BannerTemplate) Banner.__index = Banner function Banner.new(protectionObj, blurbObj, cfg) local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb. obj.imageWidth = 40 obj.imageCaption = blurbObj:makeBannerText('alt') -- Large banners use the alt text for the tooltip. obj._reasonText = blurbObj:makeBannerText('text') obj._explanationText = blurbObj:makeBannerText('explanation') obj._page = protectionObj.title.prefixedText -- Only makes a difference in testing. return setmetatable(obj, Banner) end function Banner:__tostring() -- Renders the banner. makeMessageBox = makeMessageBox or require('Module:Message box').main local reasonText = self._reasonText or error('no reason text set', 2) local explanationText = self._explanationText local mbargs = { page = self._page, type = 'protection', image = self:renderImage(), text = string.format( "'''%s'''%s", reasonText, explanationText and '<br />' .. explanationText or '' ) } return makeMessageBox('mbox', mbargs) end -------------------------------------------------------------------------------- -- Padlock class -------------------------------------------------------------------------------- local Padlock = setmetatable({}, BannerTemplate) Padlock.__index = Padlock function Padlock.new(protectionObj, blurbObj, cfg) local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb. obj.imageWidth = 20 obj.imageCaption = blurbObj:makeBannerText('tooltip') obj._imageAlt = blurbObj:makeBannerText('alt') obj._imageLink = blurbObj:makeBannerText('link') obj._indicatorName = cfg.padlockIndicatorNames[protectionObj.action] or cfg.padlockIndicatorNames.default or 'pp-default' return setmetatable(obj, Padlock) end function Padlock:__tostring() local frame = mw.getCurrentFrame() -- The nowiki tag helps prevent whitespace at the top of articles. return frame:extensionTag{name = 'nowiki'} .. frame:extensionTag{ name = 'indicator', args = {name = self._indicatorName}, content = self:renderImage() } end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p = {} function p._exportClasses() -- This is used for testing purposes. return { Protection = Protection, Blurb = Blurb, BannerTemplate = BannerTemplate, Banner = Banner, Padlock = Padlock, } end function p._main(args, cfg, title) args = args or {} cfg = cfg or require(CONFIG_MODULE) local protectionObj = Protection.new(args, cfg, title) local ret = {} -- If a page's edit protection is equally or more restrictive than its -- protection from some other action, then don't bother displaying anything -- for the other action (except categories). if not yesno(args.catonly) and (protectionObj.action == 'edit' or args.demolevel or not getReachableNodes( cfg.hierarchy, protectionObj.level )[effectiveProtectionLevel('edit', protectionObj.title)]) then -- Initialise the blurb object local blurbObj = Blurb.new(protectionObj, args, cfg) -- Render the banner if protectionObj:shouldShowLock() then ret[#ret + 1] = tostring( (yesno(args.small) and Padlock or Banner) .new(protectionObj, blurbObj, cfg) ) end end -- Render the categories if yesno(args.category) ~= false then ret[#ret + 1] = protectionObj:makeCategoryLinks() end return table.concat(ret) end function p.main(frame, cfg) cfg = cfg or require(CONFIG_MODULE) -- Find default args, if any. local parent = frame.getParent and frame:getParent() local defaultArgs = parent and cfg.wrappers[parent:getTitle():gsub('/sandbox$', '')] -- Find user args, and use the parent frame if we are being called from a -- wrapper template. getArgs = getArgs or require('Module:Arguments').getArgs local userArgs = getArgs(frame, { parentOnly = defaultArgs, frameOnly = not defaultArgs }) -- Build the args table. User-specified args overwrite default args. local args = {} for k, v in pairs(defaultArgs or {}) do args[k] = v end for k, v in pairs(userArgs) do args[k] = v end return p._main(args, cfg) end return p 894f0884d4c2da1ce19d385b96f59af654b0946a Module:Protection banner/config 828 203 404 403 2023-01-16T18:15:38Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain -- This module provides configuration data for [[Module:Protection banner]]. return { -------------------------------------------------------------------------------- -- -- BANNER DATA -- -------------------------------------------------------------------------------- --[[ -- Banner data consists of six fields: -- * text - the main protection text that appears at the top of protection -- banners. -- * explanation - the text that appears below the main protection text, used -- to explain the details of the protection. -- * tooltip - the tooltip text you see when you move the mouse over a small -- padlock icon. -- * link - the page that the small padlock icon links to. -- * alt - the alt text for the small padlock icon. This is also used as tooltip -- text for the large protection banners. -- * image - the padlock image used in both protection banners and small padlock -- icons. -- -- The module checks in three separate tables to find a value for each field. -- First it checks the banners table, which has values specific to the reason -- for the page being protected. Then the module checks the defaultBanners -- table, which has values specific to each protection level. Finally, the -- module checks the masterBanner table, which holds data for protection -- templates to use if no data has been found in the previous two tables. -- -- The values in the banner data can take parameters. These are specified -- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name -- enclosed in curly braces). -- -- Available parameters: -- -- ${CURRENTVERSION} - a link to the page history or the move log, with the -- display message "current-version-edit-display" or -- "current-version-move-display". -- -- ${EDITREQUEST} - a link to create an edit request for the current page. -- -- ${EXPLANATIONBLURB} - an explanation blurb, e.g. "Please discuss any changes -- on the talk page; you may submit a request to ask an administrator to make -- an edit if it is minor or supported by consensus." -- -- ${IMAGELINK} - a link to set the image to, depending on the protection -- action and protection level. -- -- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry -- is set. E.g. "Editing of this page by new or unregistered users is currently -- disabled until dd Month YYYY." -- -- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation -- so that it can be used in run-on sentences. -- -- ${PAGETYPE} - the type of the page, e.g. "article" or "template". -- Defined in the cfg.pagetypes table. -- -- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g. -- "Editing of this page by new or unregistered users is currently disabled" -- -- ${PROTECTIONDATE} - the protection date, if it has been supplied to the -- template. -- -- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or -- "semi-protected". -- -- ${PROTECTIONLOG} - a link to the protection log or the pending changes log, -- depending on the protection action. -- -- ${TALKPAGE} - a link to the talk page. If a section is specified, links -- straight to that talk page section. -- -- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to -- create a blurb like "This template is semi-protected", or "This article is -- move-protected until DD Month YYYY". -- -- ${VANDAL} - links for the specified username (or the root page name) -- using Module:Vandal-m. -- -- Functions -- -- For advanced users, it is possible to use Lua functions instead of strings -- in the banner config tables. Using functions gives flexibility that is not -- possible just by using parameters. Functions take two arguments, the -- protection object and the template arguments, and they must output a string. -- -- For example: -- -- text = function (protectionObj, args) -- if protectionObj.level == 'autoconfirmed' then -- return 'foo' -- else -- return 'bar' -- end -- end -- -- Some protection object properties and methods that may be useful: -- protectionObj.action - the protection action -- protectionObj.level - the protection level -- protectionObj.reason - the protection reason -- protectionObj.expiry - the expiry. Nil if unset, the string "indef" if set -- to indefinite, and the protection time in unix time if temporary. -- protectionObj.protectionDate - the protection date in unix time, or nil if -- unspecified. -- protectionObj.bannerConfig - the banner config found by the module. Beware -- of editing the config field used by the function, as it could create an -- infinite loop. -- protectionObj:isProtected - returns a boolean showing whether the page is -- protected. -- protectionObj:isTemporary - returns a boolean showing whether the expiry is -- temporary. -- protectionObj:isIncorrect - returns a boolean showing whether the protection -- template is incorrect. --]] -- The master banner data, used if no values have been found in banners or -- defaultBanners. masterBanner = { text = '${INTROBLURB}', explanation = '${EXPLANATIONBLURB}', tooltip = '${TOOLTIPBLURB}', link = '${IMAGELINK}', alt = 'Page ${PROTECTIONLEVEL}' }, -- The default banner data. This holds banner data for different protection -- levels. -- *required* - this table needs edit, move, autoreview and upload subtables. defaultBanners = { edit = {}, move = {}, autoreview = { default = { alt = 'Page protected with pending changes', tooltip = 'All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users', image = 'Pending-protection-shackle.svg' } }, upload = {} }, -- The banner data. This holds banner data for different protection reasons. -- In fact, the reasons specified in this table control which reasons are -- valid inputs to the first positional parameter. -- -- There is also a non-standard "description" field that can be used for items -- in this table. This is a description of the protection reason for use in the -- module documentation. -- -- *required* - this table needs edit, move, autoreview and upload subtables. banners = { edit = { blp = { description = 'For pages protected to promote compliance with the' .. ' [[Wikipedia:Biographies of living persons' .. '|biographies of living persons]] policy', text = '${INTROFRAGMENT} to promote compliance with' .. ' [[Wikipedia:Biographies of living persons' .. "|Wikipedia's&nbsp;policy on&nbsp;the&nbsp;biographies" .. ' of&nbsp;living&nbsp;people]].', tooltip = '${TOOLTIPFRAGMENT} to promote compliance with the policy on' .. ' biographies of living persons', }, dmca = { description = 'For pages protected by the Wikimedia Foundation' .. ' due to [[Digital Millennium Copyright Act]] takedown requests', explanation = function (protectionObj, args) local ret = 'Pursuant to a rights owner notice under the Digital' .. ' Millennium Copyright Act (DMCA) regarding some content' .. ' in this article, the Wikimedia Foundation acted under' .. ' applicable law and took down and restricted the content' .. ' in question.' if args.notice then ret = ret .. ' A copy of the received notice can be found here: ' .. args.notice .. '.' end ret = ret .. ' For more information, including websites discussing' .. ' how to file a counter-notice, please see' .. " [[Wikipedia:Office actions]] and the article's ${TALKPAGE}." .. "'''Do not remove this template from the article until the" .. " restrictions are withdrawn'''." return ret end, image = 'Office-protection-shackle.svg', }, dispute = { description = 'For pages protected due to editing disputes', text = function (protectionObj, args) -- Find the value of "disputes". local display = 'disputes' local disputes if args.section then disputes = string.format( '[[%s:%s#%s|%s]]', mw.site.namespaces[protectionObj.title.namespace].talk.name, protectionObj.title.text, args.section, display ) else disputes = display end -- Make the blurb, depending on the expiry. local msg if type(protectionObj.expiry) == 'number' then msg = '${INTROFRAGMENT} or until editing %s have been resolved.' else msg = '${INTROFRAGMENT} until editing %s have been resolved.' end return string.format(msg, disputes) end, explanation = "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}', tooltip = '${TOOLTIPFRAGMENT} due to editing disputes', }, ecp = { description = 'For articles in topic areas authorized by' .. ' [[Wikipedia:Arbitration Committee|ArbCom]] or' .. ' meets the criteria for community use', tooltip = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}', alt = 'Extended-protected ${PAGETYPE}', }, mainpage = { description = 'For pages protected for being displayed on the [[Main Page]]', text = 'This file is currently' .. ' [[Wikipedia:This page is protected|protected]] from' .. ' editing because it is currently or will soon be displayed' .. ' on the [[Main Page]].', explanation = 'Images on the Main Page are protected due to their high' .. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.' .. '<br /><span style="font-size:90%;">' .. "'''Administrators:''' Once this image is definitely off the Main Page," .. ' please unprotect this file, or reduce to semi-protection,' .. ' as appropriate.</span>', }, office = { description = 'For pages protected by the Wikimedia Foundation', text = function (protectionObj, args) local ret = 'This ${PAGETYPE} is currently under the' .. ' scrutiny of the' .. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]' .. ' and is protected.' if protectionObj.protectionDate then ret = ret .. ' It has been protected since ${PROTECTIONDATE}.' end return ret end, explanation = "If you can edit this page, please discuss all changes and" .. " additions on the ${TALKPAGE} first. '''Do not remove protection from this" .. " page unless you are authorized by the Wikimedia Foundation to do" .. " so.'''", image = 'Office-protection-shackle.svg', }, reset = { description = 'For pages protected by the Wikimedia Foundation and' .. ' "reset" to a bare-bones version', text = 'This ${PAGETYPE} is currently under the' .. ' scrutiny of the' .. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]' .. ' and is protected.', explanation = function (protectionObj, args) local ret = '' if protectionObj.protectionDate then ret = ret .. 'On ${PROTECTIONDATE} this ${PAGETYPE} was' else ret = ret .. 'This ${PAGETYPE} has been' end ret = ret .. ' reduced to a' .. ' simplified, "bare bones" version so that it may be completely' .. ' rewritten to ensure it meets the policies of' .. ' [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].' .. ' Standard Wikipedia policies will apply to its rewriting—which' .. ' will eventually be open to all editors—and will be strictly' .. ' enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while' .. ' it is being rebuilt.\n\n' .. 'Any insertion of material directly from' .. ' pre-protection revisions of the ${PAGETYPE} will be removed, as' .. ' will any material added to the ${PAGETYPE} that is not properly' .. ' sourced. The associated talk page(s) were also cleared on the' .. " same date.\n\n" .. "If you can edit this page, please discuss all changes and" .. " additions on the ${TALKPAGE} first. '''Do not override" .. " this action, and do not remove protection from this page," .. " unless you are authorized by the Wikimedia Foundation" .. " to do so. No editor may remove this notice.'''" return ret end, image = 'Office-protection-shackle.svg', }, sock = { description = 'For pages protected due to' .. ' [[Wikipedia:Sock puppetry|sock puppetry]]', text = '${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of' .. ' [[Wikipedia:Blocking policy|blocked]] or' .. ' [[Wikipedia:Banning policy|banned users]]' .. ' from editing it.', tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from' .. ' editing it', }, template = { description = 'For [[Wikipedia:High-risk templates|high-risk]]' .. ' templates and Lua modules', text = 'This is a permanently [[Help:Protection|protected]] ${PAGETYPE},' .. ' as it is [[Wikipedia:High-risk templates|high-risk]].', explanation = 'Please discuss any changes on the ${TALKPAGE}; you may' .. ' ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] or' .. ' [[Wikipedia:Template editor|template editor]] to make an edit if' .. ' it is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by' .. ' [[Wikipedia:Consensus|consensus]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.', tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}' .. ' to prevent vandalism', alt = 'Permanently protected ${PAGETYPE}', }, usertalk = { description = 'For pages protected against disruptive edits by a' .. ' particular user', text = '${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,' .. ' such as abusing the' .. ' &#123;&#123;[[Template:unblock|unblock]]&#125;&#125; template.', explanation = 'If you cannot edit this user talk page and you need to' .. ' make a change or leave a message, you can' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for edits to a protected page' .. '|request an edit]],' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]],' .. ' [[Special:Userlogin|log in]],' .. ' or [[Special:UserLogin/signup|create an account]].', }, vandalism = { description = 'For pages protected against' .. ' [[Wikipedia:Vandalism|vandalism]]', text = '${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].', explanation = function (protectionObj, args) local ret = '' if protectionObj.level == 'sysop' then ret = ret .. "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ' end return ret .. '${EXPLANATIONBLURB}' end, tooltip = '${TOOLTIPFRAGMENT} due to vandalism', } }, move = { dispute = { description = 'For pages protected against page moves due to' .. ' disputes over the page title', explanation = "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}', image = 'Move-protection-shackle.svg' }, vandalism = { description = 'For pages protected against' .. ' [[Wikipedia:Vandalism#Page-move vandalism' .. ' |page-move vandalism]]' } }, autoreview = {}, upload = {} }, -------------------------------------------------------------------------------- -- -- GENERAL DATA TABLES -- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -- Protection blurbs -------------------------------------------------------------------------------- -- This table produces the protection blurbs available with the -- ${PROTECTIONBLURB} parameter. It is sorted by protection action and -- protection level, and is checked by the module in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. protectionBlurbs = { edit = { default = 'This ${PAGETYPE} is currently [[Help:Protection|' .. 'protected]] from editing', autoconfirmed = 'Editing of this ${PAGETYPE} by [[Wikipedia:User access' .. ' levels#New users|new]] or [[Wikipedia:User access levels#Unregistered' .. ' users|unregistered]] users is currently [[Help:Protection|disabled]]', extendedconfirmed = 'This ${PAGETYPE} is currently under extended confirmed protection', }, move = { default = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]' .. ' from [[Help:Moving a page|page moves]]' }, autoreview = { default = 'All edits made to this ${PAGETYPE} by' .. ' [[Wikipedia:User access levels#New users|new]] or' .. ' [[Wikipedia:User access levels#Unregistered users|unregistered]]' .. ' users are currently' .. ' [[Wikipedia:Pending changes|subject to review]]' }, upload = { default = 'Uploading new versions of this ${PAGETYPE} is currently disabled' } }, -------------------------------------------------------------------------------- -- Explanation blurbs -------------------------------------------------------------------------------- -- This table produces the explanation blurbs available with the -- ${EXPLANATIONBLURB} parameter. It is sorted by protection action, -- protection level, and whether the page is a talk page or not. If the page is -- a talk page it will have a talk key of "talk"; otherwise it will have a talk -- key of "subject". The table is checked in the following order: -- 1. page's protection action, page's protection level, page's talk key -- 2. page's protection action, page's protection level, default talk key -- 3. page's protection action, default protection level, page's talk key -- 4. page's protection action, default protection level, default talk key -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. explanationBlurbs = { edit = { autoconfirmed = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details. If you' .. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can' .. ' ${EDITREQUEST}, discuss changes on the ${TALKPAGE},' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details. If you' .. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].', }, extendedconfirmed = { default = 'Extended confirmed protection prevents edits from all unregistered editors' .. ' and registered users with fewer than 30 days tenure and 500 edits.' .. ' The [[Wikipedia:Protection policy#extended|policy on community use]]' .. ' specifies that extended confirmed protection can be applied to combat' .. ' disruption, if semi-protection has proven to be ineffective.' .. ' Extended confirmed protection may also be applied to enforce' .. ' [[Wikipedia:Arbitration Committee|arbitration sanctions]].' .. ' Please discuss any changes on the ${TALKPAGE}; you may' .. ' ${EDITREQUEST} to ask for uncontroversial changes supported by' .. ' [[Wikipedia:Consensus|consensus]].' }, default = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Please discuss any changes on the ${TALKPAGE}; you' .. ' may ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] to make an edit if it' .. ' is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by [[Wikipedia:Consensus' .. '|consensus]]. You may also [[Wikipedia:Requests for' .. ' page protection#Current requests for reduction in protection level' .. '|request]] that this page be unprotected.', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' You may [[Wikipedia:Requests for page' .. ' protection#Current requests for edits to a protected page|request an' .. ' edit]] to this page, or [[Wikipedia:Requests for' .. ' page protection#Current requests for reduction in protection level' .. '|ask]] for it to be unprotected.' } }, move = { default = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but cannot be moved' .. ' until unprotected. Please discuss any suggested moves on the' .. ' ${TALKPAGE} or at [[Wikipedia:Requested moves]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but cannot be moved' .. ' until unprotected. Please discuss any suggested moves at' .. ' [[Wikipedia:Requested moves]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.' } }, autoreview = { default = { default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Edits to this ${PAGETYPE} by new and unregistered users' .. ' will not be visible to readers until they are accepted by' .. ' a reviewer. To avoid the need for your edits to be' .. ' reviewed, you may' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].' }, }, upload = { default = { default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but new versions of the file' .. ' cannot be uploaded until it is unprotected. You can' .. ' request that a new version be uploaded by using a' .. ' [[Wikipedia:Edit requests|protected edit request]], or you' .. ' can [[Wikipedia:Requests for page protection|request]]' .. ' that the file be unprotected.' } } }, -------------------------------------------------------------------------------- -- Protection levels -------------------------------------------------------------------------------- -- This table provides the data for the ${PROTECTIONLEVEL} parameter, which -- produces a short label for different protection levels. It is sorted by -- protection action and protection level, and is checked in the following -- order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. protectionLevels = { edit = { default = 'protected', templateeditor = 'template-protected', extendedconfirmed = 'extended-protected', autoconfirmed = 'semi-protected', }, move = { default = 'move-protected' }, autoreview = { }, upload = { default = 'upload-protected' } }, -------------------------------------------------------------------------------- -- Images -------------------------------------------------------------------------------- -- This table lists different padlock images for each protection action and -- protection level. It is used if an image is not specified in any of the -- banner data tables, and if the page does not satisfy the conditions for using -- the ['image-filename-indef'] image. It is checked in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level images = { edit = { default = 'Full-protection-shackle.svg', templateeditor = 'Template-protection-shackle.svg', extendedconfirmed = 'Extended-protection-shackle.svg', autoconfirmed = 'Semi-protection-shackle.svg' }, move = { default = 'Move-protection-shackle.svg', }, autoreview = { default = 'Pending-protection-shackle.svg' }, upload = { default = 'Upload-protection-shackle.svg' } }, -- Pages with a reason specified in this table will show the special "indef" -- padlock, defined in the 'image-filename-indef' message, if no expiry is set. indefImageReasons = { template = true }, -------------------------------------------------------------------------------- -- Image links -------------------------------------------------------------------------------- -- This table provides the data for the ${IMAGELINK} parameter, which gets -- the image link for small padlock icons based on the page's protection action -- and protection level. It is checked in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. imageLinks = { edit = { default = 'Wikipedia:Protection policy#full', templateeditor = 'Wikipedia:Protection policy#template', extendedconfirmed = 'Wikipedia:Protection policy#extended', autoconfirmed = 'Wikipedia:Protection policy#semi' }, move = { default = 'Wikipedia:Protection policy#move' }, autoreview = { default = 'Wikipedia:Protection policy#pending' }, upload = { default = 'Wikipedia:Protection policy#upload' } }, -------------------------------------------------------------------------------- -- Padlock indicator names -------------------------------------------------------------------------------- -- This table provides the "name" attribute for the <indicator> extension tag -- with which small padlock icons are generated. All indicator tags on a page -- are displayed in alphabetical order based on this attribute, and with -- indicator tags with duplicate names, the last tag on the page wins. -- The attribute is chosen based on the protection action; table keys must be a -- protection action name or the string "default". padlockIndicatorNames = { autoreview = 'pp-autoreview', default = 'pp-default' }, -------------------------------------------------------------------------------- -- Protection categories -------------------------------------------------------------------------------- --[[ -- The protection categories are stored in the protectionCategories table. -- Keys to this table are made up of the following strings: -- -- 1. the expiry date -- 2. the namespace -- 3. the protection reason (e.g. "dispute" or "vandalism") -- 4. the protection level (e.g. "sysop" or "autoconfirmed") -- 5. the action (e.g. "edit" or "move") -- -- When the module looks up a category in the table, first it will will check to -- see a key exists that corresponds to all five parameters. For example, a -- user page semi-protected from vandalism for two weeks would have the key -- "temp-user-vandalism-autoconfirmed-edit". If no match is found, the module -- changes the first part of the key to "all" and checks the table again. It -- keeps checking increasingly generic key combinations until it finds the -- field, or until it reaches the key "all-all-all-all-all". -- -- The module uses a binary matrix to determine the order in which to search. -- This is best demonstrated by a table. In this table, the "0" values -- represent "all", and the "1" values represent the original data (e.g. -- "indef" or "file" or "vandalism"). -- -- expiry namespace reason level action -- order -- 1 1 1 1 1 1 -- 2 0 1 1 1 1 -- 3 1 0 1 1 1 -- 4 0 0 1 1 1 -- 5 1 1 0 1 1 -- 6 0 1 0 1 1 -- 7 1 0 0 1 1 -- 8 0 0 0 1 1 -- 9 1 1 1 0 1 -- 10 0 1 1 0 1 -- 11 1 0 1 0 1 -- 12 0 0 1 0 1 -- 13 1 1 0 0 1 -- 14 0 1 0 0 1 -- 15 1 0 0 0 1 -- 16 0 0 0 0 1 -- 17 1 1 1 1 0 -- 18 0 1 1 1 0 -- 19 1 0 1 1 0 -- 20 0 0 1 1 0 -- 21 1 1 0 1 0 -- 22 0 1 0 1 0 -- 23 1 0 0 1 0 -- 24 0 0 0 1 0 -- 25 1 1 1 0 0 -- 26 0 1 1 0 0 -- 27 1 0 1 0 0 -- 28 0 0 1 0 0 -- 29 1 1 0 0 0 -- 30 0 1 0 0 0 -- 31 1 0 0 0 0 -- 32 0 0 0 0 0 -- -- In this scheme the action has the highest priority, as it is the last -- to change, and the expiry has the least priority, as it changes the most. -- The priorities of the expiry, the protection level and the action are -- fixed, but the priorities of the reason and the namespace can be swapped -- through the use of the cfg.bannerDataNamespaceHasPriority table. --]] -- If the reason specified to the template is listed in this table, -- namespace data will take priority over reason data in the protectionCategories -- table. reasonsWithNamespacePriority = { vandalism = true, }, -- The string to use as a namespace key for the protectionCategories table for each -- namespace number. categoryNamespaceKeys = { [ 2] = 'user', [ 3] = 'user', [ 4] = 'project', [ 6] = 'file', [ 8] = 'mediawiki', [ 10] = 'template', [ 12] = 'project', [ 14] = 'category', [100] = 'portal', [828] = 'module', }, protectionCategories = { ['all|all|all|all|all'] = 'Wikipedia fully protected pages', ['all|all|office|all|all'] = 'Wikipedia Office-protected pages', ['all|all|reset|all|all'] = 'Wikipedia Office-protected pages', ['all|all|dmca|all|all'] = 'Wikipedia Office-protected pages', ['all|all|mainpage|all|all'] = 'Wikipedia fully-protected main page files', ['all|all|all|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages', ['all|all|ecp|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages', ['all|template|all|all|edit'] = 'Wikipedia fully protected templates', ['all|all|all|autoconfirmed|edit'] = 'Wikipedia semi-protected pages', ['indef|all|all|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected pages', ['all|all|blp|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected biographies of living people', ['temp|all|blp|autoconfirmed|edit'] = 'Wikipedia temporarily semi-protected biographies of living people', ['all|all|dispute|autoconfirmed|edit'] = 'Wikipedia pages semi-protected due to dispute', ['all|all|sock|autoconfirmed|edit'] = 'Wikipedia pages semi-protected from banned users', ['all|all|vandalism|autoconfirmed|edit'] = 'Wikipedia pages semi-protected against vandalism', ['all|category|all|autoconfirmed|edit'] = 'Wikipedia semi-protected categories', ['all|file|all|autoconfirmed|edit'] = 'Wikipedia semi-protected files', ['all|portal|all|autoconfirmed|edit'] = 'Wikipedia semi-protected portals', ['all|project|all|autoconfirmed|edit'] = 'Wikipedia semi-protected project pages', ['all|talk|all|autoconfirmed|edit'] = 'Wikipedia semi-protected talk pages', ['all|template|all|autoconfirmed|edit'] = 'Wikipedia semi-protected templates', ['all|user|all|autoconfirmed|edit'] = 'Wikipedia semi-protected user and user talk pages', ['all|all|all|templateeditor|edit'] = 'Wikipedia template-protected pages other than templates and modules', ['all|template|all|templateeditor|edit'] = 'Wikipedia template-protected templates', ['all|template|all|templateeditor|move'] = 'Wikipedia template-protected templates', -- move-protected templates ['all|all|blp|sysop|edit'] = 'Wikipedia indefinitely protected biographies of living people', ['temp|all|blp|sysop|edit'] = 'Wikipedia temporarily protected biographies of living people', ['all|all|dispute|sysop|edit'] = 'Wikipedia pages protected due to dispute', ['all|all|sock|sysop|edit'] = 'Wikipedia pages protected from banned users', ['all|all|vandalism|sysop|edit'] = 'Wikipedia pages protected against vandalism', ['all|category|all|sysop|edit'] = 'Wikipedia fully protected categories', ['all|file|all|sysop|edit'] = 'Wikipedia fully-protected files', ['all|project|all|sysop|edit'] = 'Wikipedia fully-protected project pages', ['all|talk|all|sysop|edit'] = 'Wikipedia fully-protected talk pages', ['all|template|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected templates', ['all|template|all|sysop|edit'] = 'Wikipedia fully protected templates', ['all|user|all|sysop|edit'] = 'Wikipedia fully protected user and user talk pages', ['all|module|all|all|edit'] = 'Wikipedia fully-protected modules', ['all|module|all|templateeditor|edit'] = 'Wikipedia template-protected modules', ['all|module|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected modules', ['all|module|all|autoconfirmed|edit'] = 'Wikipedia semi-protected modules', ['all|all|all|sysop|move'] = 'Wikipedia move-protected pages', ['indef|all|all|sysop|move'] = 'Wikipedia indefinitely move-protected pages', ['all|all|dispute|sysop|move'] = 'Wikipedia pages move-protected due to dispute', ['all|all|vandalism|sysop|move'] = 'Wikipedia pages move-protected due to vandalism', ['all|portal|all|sysop|move'] = 'Wikipedia move-protected portals', ['all|project|all|sysop|move'] = 'Wikipedia move-protected project pages', ['all|talk|all|sysop|move'] = 'Wikipedia move-protected talk pages', ['all|template|all|sysop|move'] = 'Wikipedia move-protected templates', ['all|user|all|sysop|move'] = 'Wikipedia move-protected user and user talk pages', ['all|all|all|autoconfirmed|autoreview'] = 'Wikipedia pending changes protected pages', ['all|file|all|all|upload'] = 'Wikipedia upload-protected files', }, -------------------------------------------------------------------------------- -- Expiry category config -------------------------------------------------------------------------------- -- This table configures the expiry category behaviour for each protection -- action. -- * If set to true, setting that action will always categorise the page if -- an expiry parameter is not set. -- * If set to false, setting that action will never categorise the page. -- * If set to nil, the module will categorise the page if: -- 1) an expiry parameter is not set, and -- 2) a reason is provided, and -- 3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck -- table. expiryCheckActions = { edit = nil, move = false, autoreview = true, upload = false }, reasonsWithoutExpiryCheck = { blp = true, template = true, }, -------------------------------------------------------------------------------- -- Pagetypes -------------------------------------------------------------------------------- -- This table produces the page types available with the ${PAGETYPE} parameter. -- Keys are namespace numbers, or the string "default" for the default value. pagetypes = { [0] = 'article', [6] = 'file', [10] = 'template', [14] = 'category', [828] = 'module', default = 'page' }, -------------------------------------------------------------------------------- -- Strings marking indefinite protection -------------------------------------------------------------------------------- -- This table contains values passed to the expiry parameter that mean the page -- is protected indefinitely. indefStrings = { ['indef'] = true, ['indefinite'] = true, ['indefinitely'] = true, ['infinite'] = true, }, -------------------------------------------------------------------------------- -- Group hierarchy -------------------------------------------------------------------------------- -- This table maps each group to all groups that have a superset of the original -- group's page editing permissions. hierarchy = { sysop = {}, reviewer = {'sysop'}, filemover = {'sysop'}, templateeditor = {'sysop'}, extendedconfirmed = {'sysop'}, autoconfirmed = {'reviewer', 'filemover', 'templateeditor', 'extendedconfirmed'}, user = {'autoconfirmed'}, ['*'] = {'user'} }, -------------------------------------------------------------------------------- -- Wrapper templates and their default arguments -------------------------------------------------------------------------------- -- This table contains wrapper templates used with the module, and their -- default arguments. Templates specified in this table should contain the -- following invocation, and no other template content: -- -- {{#invoke:Protection banner|main}} -- -- If other content is desired, it can be added between -- <noinclude>...</noinclude> tags. -- -- When a user calls one of these wrapper templates, they will use the -- default arguments automatically. However, users can override any of the -- arguments. wrappers = { ['Template:Pp'] = {}, ['Template:Pp-extended'] = {'ecp'}, ['Template:Pp-blp'] = {'blp'}, -- we don't need Template:Pp-create ['Template:Pp-dispute'] = {'dispute'}, ['Template:Pp-main-page'] = {'mainpage'}, ['Template:Pp-move'] = {action = 'move', catonly = 'yes'}, ['Template:Pp-move-dispute'] = {'dispute', action = 'move', catonly = 'yes'}, -- we don't need Template:Pp-move-indef ['Template:Pp-move-vandalism'] = {'vandalism', action = 'move', catonly = 'yes'}, ['Template:Pp-office'] = {'office'}, ['Template:Pp-office-dmca'] = {'dmca'}, ['Template:Pp-pc'] = {action = 'autoreview', small = true}, ['Template:Pp-pc1'] = {action = 'autoreview', small = true}, ['Template:Pp-reset'] = {'reset'}, ['Template:Pp-semi-indef'] = {small = true}, ['Template:Pp-sock'] = {'sock'}, ['Template:Pp-template'] = {'template', small = true}, ['Template:Pp-upload'] = {action = 'upload'}, ['Template:Pp-usertalk'] = {'usertalk'}, ['Template:Pp-vandalism'] = {'vandalism'}, }, -------------------------------------------------------------------------------- -- -- MESSAGES -- -------------------------------------------------------------------------------- msg = { -------------------------------------------------------------------------------- -- Intro blurb and intro fragment -------------------------------------------------------------------------------- -- These messages specify what is produced by the ${INTROBLURB} and -- ${INTROFRAGMENT} parameters. If the protection is temporary they use the -- intro-blurb-expiry or intro-fragment-expiry, and if not they use -- intro-blurb-noexpiry or intro-fragment-noexpiry. -- It is possible to use banner parameters in these messages. ['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.', ['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.', ['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},', ['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}', -------------------------------------------------------------------------------- -- Tooltip blurb -------------------------------------------------------------------------------- -- These messages specify what is produced by the ${TOOLTIPBLURB} parameter. -- If the protection is temporary the tooltip-blurb-expiry message is used, and -- if not the tooltip-blurb-noexpiry message is used. -- It is possible to use banner parameters in these messages. ['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.', ['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}.', ['tooltip-fragment-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},', ['tooltip-fragment-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}', -------------------------------------------------------------------------------- -- Special explanation blurb -------------------------------------------------------------------------------- -- An explanation blurb for pages that cannot be unprotected, e.g. for pages -- in the MediaWiki namespace. -- It is possible to use banner parameters in this message. ['explanation-blurb-nounprotect'] = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Please discuss any changes on the ${TALKPAGE}; you' .. ' may ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] to make an edit if it' .. ' is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by [[Wikipedia:Consensus' .. '|consensus]].', -------------------------------------------------------------------------------- -- Protection log display values -------------------------------------------------------------------------------- -- These messages determine the display values for the protection log link -- or the pending changes log link produced by the ${PROTECTIONLOG} parameter. -- It is possible to use banner parameters in these messages. ['protection-log-display'] = 'protection log', ['pc-log-display'] = 'pending changes log', -------------------------------------------------------------------------------- -- Current version display values -------------------------------------------------------------------------------- -- These messages determine the display values for the page history link -- or the move log link produced by the ${CURRENTVERSION} parameter. -- It is possible to use banner parameters in these messages. ['current-version-move-display'] = 'current title', ['current-version-edit-display'] = 'current version', -------------------------------------------------------------------------------- -- Talk page -------------------------------------------------------------------------------- -- This message determines the display value of the talk page link produced -- with the ${TALKPAGE} parameter. -- It is possible to use banner parameters in this message. ['talk-page-link-display'] = 'talk page', -------------------------------------------------------------------------------- -- Edit requests -------------------------------------------------------------------------------- -- This message determines the display value of the edit request link produced -- with the ${EDITREQUEST} parameter. -- It is possible to use banner parameters in this message. ['edit-request-display'] = 'submit an edit request', -------------------------------------------------------------------------------- -- Expiry date format -------------------------------------------------------------------------------- -- This is the format for the blurb expiry date. It should be valid input for -- the first parameter of the #time parser function. ['expiry-date-format'] = 'F j, Y "at" H:i e', -------------------------------------------------------------------------------- -- Tracking categories -------------------------------------------------------------------------------- -- These messages determine which tracking categories the module outputs. ['tracking-category-incorrect'] = 'Wikipedia pages with incorrect protection templates', ['tracking-category-template'] = 'Wikipedia template-protected pages other than templates and modules', -------------------------------------------------------------------------------- -- Images -------------------------------------------------------------------------------- -- These are images that are not defined by their protection action and protection level. ['image-filename-indef'] = 'Full-protection-shackle.svg', ['image-filename-default'] = 'Transparent.gif', -------------------------------------------------------------------------------- -- End messages -------------------------------------------------------------------------------- } -------------------------------------------------------------------------------- -- End configuration -------------------------------------------------------------------------------- } 59c408f72ce81e080cce79518231e85981ebcf3b Module:Sidebar/configuration 828 205 408 407 2023-01-16T18:15:39Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain return { i18n = { child_yes = 'yes', float_none = 'none', float_left = 'left', wrap_true = 'true', navbar_none = 'none', navbar_off = 'off', default_list_title = 'List', title_not_to_add_navbar = 'Template:Sidebar', collapse_title_not_to_add_navbar = 'Template:Sidebar with collapsible lists', templatestyles = 'Module:Sidebar/styles.css', category = { child = '[[Category:Pages using sidebar with the child parameter]]', conversion = '[[Category:Sidebars with styles needing conversion]]' }, pattern = { collapse_sandbox = '/sandbox$', sandbox = '/sandbox$', subgroup = 'sidebar%-subgroup', style_conversion = 'style$', uncategorized_conversion_titles = { '/[Ss]andbox', '/[Tt]estcases', '/[Dd]oc$' } }, class = { sidebar = 'sidebar', subgroup = 'sidebar-subgroup', collapse = 'sidebar-collapse', float_none = 'sidebar-none', float_left = 'sidebar-left', wraplinks = 'nowraplinks', outer_title = 'sidebar-outer-title', top_image = 'sidebar-top-image', top_caption = 'sidebar-top-caption', pretitle = 'sidebar-pretitle', pretitle_with_top_image = 'sidebar-pretitle-with-top-image', title = 'sidebar-title', title_with_pretitle = 'sidebar-title-with-pretitle', image = 'sidebar-image', caption = 'sidebar-caption', above = 'sidebar-above', heading = 'sidebar-heading', content = 'sidebar-content', content_with_subgroup = 'sidebar-content-with-subgroup', below = 'sidebar-below', navbar = 'sidebar-navbar', list = 'sidebar-list', list_title = 'sidebar-list-title', list_title_centered = 'sidebar-list-title-c', list_content = 'sidebar-list-content' } } } 069f50eb6a0f1833c7d37d07016b05305b5ed00c Module:Sidebar/styles.css 828 206 410 409 2023-01-16T18:15:39Z BEELETH 2 1 revision imported: Import from Wikipedia text text/plain /* {{pp-template}} */ /* TODO: Invert width design to be "mobile first" */ .sidebar { /* TODO: Ask if we should have max-width 22em instead */ width: 22em; /* @noflip */ float: right; /* @noflip */ clear: right; /* @noflip */ margin: 0.5em 0 1em 1em; background: #f8f9fa; border: 1px solid #aaa; padding: 0.2em; text-align: center; line-height: 1.4em; font-size: 88%; border-collapse: collapse; /* Timeless has display: none on .nomobile at mobile resolutions, so we * unhide it with display: table and let precedence and proximity win. */ display: table; } /* Unfortunately, so does Minerva desktop, except Minerva drops an * !important on the declaration. So we have to be mean for Minerva users. * Mobile removes the element entirely with `wgMFRemovableClasses` in * https://github.com/wikimedia/operations-mediawiki-config/blob/master/ wmf-config/InitialiseSettings.php#L16992 * which is why displaying it categorically with display: table works. * We don't really want to expose the generic user in the wild on mobile to have * to deal with sidebars. (Maybe the ones with collapsible lists, so that * might be an improvement. That is blocked on [[:phab:T111565]].) */ body.skin-minerva .sidebar { display: table !important; /* also, minerva is way too aggressive about other stylings on tables. * TODO remove when this template gets moved to a div. plans on talk page. * We always float right on Minerva because that's a lot of extra CSS * otherwise. */ float: right !important; margin: 0.5em 0 1em 1em !important; } .sidebar-subgroup { width: 100%; margin: 0; border-spacing: 0; } .sidebar-left { /* @noflip */ float: left; /* @noflip */ clear: left; /* @noflip */ margin: 0.5em 1em 1em 0; } .sidebar-none { float: none; clear: both; /* @noflip */ margin: 0.5em 1em 1em 0; } .sidebar-outer-title { padding: 0 0.4em 0.2em; font-size: 125%; line-height: 1.2em; font-weight: bold; } .sidebar-top-image { padding: 0.4em; } .sidebar-top-caption, .sidebar-pretitle-with-top-image, .sidebar-caption { padding: 0.2em 0.4em 0; line-height: 1.2em; } .sidebar-pretitle { padding: 0.4em 0.4em 0; line-height: 1.2em; } .sidebar-title, .sidebar-title-with-pretitle { padding: 0.2em 0.8em; font-size: 145%; line-height: 1.2em; } .sidebar-title-with-pretitle { padding: 0.1em 0.4em; } .sidebar-image { padding: 0.2em 0.4em 0.4em; } .sidebar-heading { padding: 0.1em 0.4em; } .sidebar-content { padding: 0 0.5em 0.4em; } .sidebar-content-with-subgroup { padding: 0.1em 0.4em 0.2em; } .sidebar-above, .sidebar-below { padding: 0.3em 0.8em; font-weight: bold; } .sidebar-collapse .sidebar-above, .sidebar-collapse .sidebar-below { border-top: 1px solid #aaa; border-bottom: 1px solid #aaa; } .sidebar-navbar { text-align: right; font-size: 115%; padding: 0 0.4em 0.4em; } .sidebar-list-title { padding: 0 0.4em; text-align: left; font-weight: bold; line-height: 1.6em; font-size: 105%; } /* centered text with mw-collapsible headers is finicky */ .sidebar-list-title-c { padding: 0 0.4em; text-align: center; margin: 0 3.3em; } @media (max-width: 720px) { /* users have wide latitude to set arbitrary width and margin :( "Super-specific" selector to prevent overriding this appearance by lower level sidebars too */ body.mediawiki .sidebar { width: 100% !important; clear: both; float: none !important; /* Remove when we div based; Minerva is dumb */ margin-left: 0 !important; margin-right: 0 !important; } /* TODO: We might consider making all links wrap at small resolutions and then * only introduce nowrap at higher resolutions. Do when we invert the media * query. */ } 7d621b35a37807a103b59075851fe36201204ceb Template:Div col 10 207 412 411 2023-01-16T18:15:40Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki <includeonly><templatestyles src="Div col/styles.css"/><!-- --><div class="div-col {{#ifeq:{{{small|}}}|yes|div-col-small}} {{#ifeq:{{{rules|}}}|yes|div-col-rules}} {{{class|}}}" <!-- -->{{#if:{{{colwidth|}}}{{{gap|}}}{{{style|}}}|<!-- -->style="{{#if:{{{colwidth|}}}|column-width: {{{colwidth}}};}}{{#if:{{{gap|}}}|column-gap: {{{gap}}};}}{{#if:{{{style|}}}|{{{style}}}}}"<!-- -->}}><!-- -->{{#if:{{{content|}}}|{{{content}}}</div>}}<!-- Inventory how many pages use small=yes -->{{#ifeq:{{{small|}}}|yes|[[Category:Pages using div col with small parameter]]}}<!-- --></includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using div col with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Div col]] with unknown parameter "_VALUE_"; use colwidth= to specify column size |ignoreblank=y | class | colwidth | content | gap | rules | small | style }}<noinclude> {{Documentation}} </noinclude> 6e84133dd867d6c701e7b161878cf66665bb7eb7 Template:Div col/styles.css 10 208 414 413 2023-01-16T18:15:40Z BEELETH 2 1 revision imported: Import from Wikipedia text text/plain /* {{pp|small=yes}} */ .div-col { margin-top: 0.3em; column-width: 30em; } .div-col-small { font-size: 90%; } .div-col-rules { column-rule: 1px solid #aaa; } /* Reset top margin for lists in div col */ .div-col dl, .div-col ol, .div-col ul { margin-top: 0; } /* Avoid elements breaking between columns See also Template:No col break */ .div-col li, .div-col dd { page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */ break-inside: avoid-column; } c6c2dc0cb2bab7a5f7b4eb938eebc5c67df087bc Template:Div col end 10 209 416 415 2023-01-16T18:15:40Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki <includeonly></div></includeonly><noinclude> {{Documentation|Template:Div col/doc}} </noinclude> 78088d41c21d779e3722f220fcc9773dfbbc1e4f Template:Yesno-no 10 210 418 417 2023-01-16T18:15:41Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki {{safesubst:<noinclude />yesno|{{{1}}}|yes={{{yes|yes}}}|no={{{no|no}}}|blank={{{blank|no}}}|¬={{{¬|no}}}|def={{{def|no}}}}}<noinclude> {{Documentation|Template:Yesno/doc}} <!--Categories go in the doc page referenced above; interwikis go in Wikidata.--> </noinclude> 1ad7b7800da1b867ead8f6ff8cef76e6201b3b56 Template:Para 10 211 420 419 2023-01-16T18:15:41Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki <code class="tpl-para" style="word-break:break-word;{{SAFESUBST:<noinclude />#if:{{{plain|}}}|border: none; background-color: inherit;}} {{SAFESUBST:<noinclude />#if:{{{plain|}}}{{{mxt|}}}{{{green|}}}{{{!mxt|}}}{{{red|}}}|color: {{SAFESUBST:<noinclude />#if:{{{mxt|}}}{{{green|}}}|#006400|{{SAFESUBST:<noinclude />#if:{{{!mxt|}}}{{{red|}}}|#8B0000|inherit}}}};}} {{SAFESUBST:<noinclude />#if:{{{style|}}}|{{{style}}}}}">&#124;{{SAFESUBST:<noinclude />#if:{{{1|}}}|{{{1}}}&#61;}}{{{2|}}}</code><noinclude> {{Documentation}} <!--Categories and interwikis go near the bottom of the /doc subpage.--> </noinclude> 06006deea2ed5d552aab61b4332321ab749ae7e8 Template:Documentation 10 5 422 9 2023-01-16T18:15:41Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki <includeonly>{| class="article-table plainlinks" style="width:100%;" role="complementary" |- style="font-size:18px;" ! style="padding:0px;" | <div style="width:100%; padding:3px 0px; text-align:center;" class="color1">Template documentation</div> |- | ''Note: portions of the template sample may not be visible without values provided.'' |- | View or edit [[{{{1|Template:{{PAGENAMEE}}/doc}}}|this documentation]]. ([[Template:Documentation|About template documentation]]) |- | Editors can experiment in this template's [{{fullurl:{{FULLPAGENAMEE}}/sandbox|action=edit}} sandbox] and [{{fullurl:{{FULLPAGENAMEE}}/testcases}} test case] pages. |} <div style="margin:0 1em;"> {{{{{1|{{PAGENAME}}/doc}}}}}</div></includeonly><noinclude>{{Documentation}}[[Category:Documentation templates]]</noinclude> ee98b7264ecdfefae4fda4e94a64c1d0e275ee55 Module:Documentation 828 212 424 423 2023-01-16T18:15:42Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain -- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purposes. ---------------------------------------------------------------------------- local function message(cfgKey, valArray, expectType) --[[ -- Gets a message from the cfg table and formats it if appropriate. -- The function raises an error if the value from the cfg table is not -- of the type expectType. The default type for expectType is 'string'. -- If the table valArray is present, strings such as $1, $2 etc. in the -- message are substituted with values from the table keys [1], [2] etc. -- For example, if the message "foo-message" had the value 'Foo $2 bar $1.', -- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz." --]] local msg = cfg[cfgKey] expectType = expectType or 'string' if type(msg) ~= expectType then error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) end if not valArray then return msg end local function getMessageVal(match) match = tonumber(match) return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4) end return ugsub(msg, '$([1-9][0-9]*)', getMessageVal) end p.message = message local function makeWikilink(page, display) if display then return mw.ustring.format('[[%s|%s]]', page, display) else return mw.ustring.format('[[%s]]', page) end end p.makeWikilink = makeWikilink local function makeCategoryLink(cat, sort) local catns = mw.site.namespaces[14].name return makeWikilink(catns .. ':' .. cat, sort) end p.makeCategoryLink = makeCategoryLink local function makeUrlLink(url, display) return mw.ustring.format('[%s %s]', url, display) end p.makeUrlLink = makeUrlLink local function makeToolbar(...) local ret = {} local lim = select('#', ...) if lim < 1 then return nil end for i = 1, lim do ret[#ret + 1] = select(i, ...) end -- 'documentation-toolbar' return '<span class="' .. message('toolbar-class') .. '">(' .. table.concat(ret, ' &#124; ') .. ')</span>' end p.makeToolbar = makeToolbar ---------------------------------------------------------------------------- -- Argument processing ---------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local args = getArgs(frame, { valueFunc = function (key, value) if type(value) == 'string' then value = value:match('^%s*(.-)%s*$') -- Remove whitespace. if key == 'heading' or value ~= '' then return value else return nil end else return value end end }) return p[funcName](args) end end ---------------------------------------------------------------------------- -- Entry points ---------------------------------------------------------------------------- function p.nonexistent(frame) if mw.title.getCurrentTitle().subpageText == 'testcases' then return frame:expandTemplate{title = 'module test cases notice'} else return p.main(frame) end end p.main = makeInvokeFunc('_main') function p._main(args) --[[ -- This function defines logic flow for the module. -- @args - table of arguments passed by the user --]] local env = p.getEnvironment(args) local root = mw.html.create() root :wikitext(p._getModuleWikitext(args, env)) :wikitext(p.protectionTemplate(env)) :wikitext(p.sandboxNotice(args, env)) :tag('div') -- 'documentation-container' :addClass(message('container')) :attr('role', 'complementary') :attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil) :attr('aria-label', args.heading == '' and 'Documentation' or nil) :newline() :tag('div') -- 'documentation' :addClass(message('main-div-classes')) :newline() :wikitext(p._startBox(args, env)) :wikitext(p._content(args, env)) :tag('div') -- 'documentation-clear' :addClass(message('clear')) :done() :newline() :done() :wikitext(p._endBox(args, env)) :done() :wikitext(p.addTrackingCategories(env)) -- 'Module:Documentation/styles.css' return mw.getCurrentFrame():extensionTag ( 'templatestyles', '', {src=cfg['templatestyles'] }) .. tostring(root) end ---------------------------------------------------------------------------- -- Environment settings ---------------------------------------------------------------------------- function p.getEnvironment(args) --[[ -- Returns a table with information about the environment, including title -- objects and other namespace- or path-related data. -- @args - table of arguments passed by the user -- -- Title objects include: -- env.title - the page we are making documentation for (usually the current title) -- env.templateTitle - the template (or module, file, etc.) -- env.docTitle - the /doc subpage. -- env.sandboxTitle - the /sandbox subpage. -- env.testcasesTitle - the /testcases subpage. -- -- Data includes: -- env.protectionLevels - the protection levels table of the title object. -- env.subjectSpace - the number of the title's subject namespace. -- env.docSpace - the number of the namespace the title puts its documentation in. -- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace. -- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template. -- -- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value -- returned will be nil. --]] local env, envFuncs = {}, {} -- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value -- returned by that function is memoized in the env table so that we don't call any of the functions -- more than once. (Nils won't be memoized.) setmetatable(env, { __index = function (t, key) local envFunc = envFuncs[key] if envFunc then local success, val = pcall(envFunc) if success then env[key] = val -- Memoise the value. return val end end return nil end }) function envFuncs.title() -- The title object for the current page, or a test page passed with args.page. local title local titleArg = args.page if titleArg then title = mw.title.new(titleArg) else title = mw.title.getCurrentTitle() end return title end function envFuncs.templateTitle() --[[ -- The template (or module, etc.) title object. -- Messages: -- 'sandbox-subpage' --> 'sandbox' -- 'testcases-subpage' --> 'testcases' --]] local subjectSpace = env.subjectSpace local title = env.title local subpage = title.subpageText if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then return mw.title.makeTitle(subjectSpace, title.baseText) else return mw.title.makeTitle(subjectSpace, title.text) end end function envFuncs.docTitle() --[[ -- Title object of the /doc subpage. -- Messages: -- 'doc-subpage' --> 'doc' --]] local title = env.title local docname = args[1] -- User-specified doc page. local docpage if docname then docpage = docname else docpage = env.docpageBase .. '/' .. message('doc-subpage') end return mw.title.new(docpage) end function envFuncs.sandboxTitle() --[[ -- Title object for the /sandbox subpage. -- Messages: -- 'sandbox-subpage' --> 'sandbox' --]] return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage')) end function envFuncs.testcasesTitle() --[[ -- Title object for the /testcases subpage. -- Messages: -- 'testcases-subpage' --> 'testcases' --]] return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage')) end function envFuncs.protectionLevels() -- The protection levels table of the title object. return env.title.protectionLevels end function envFuncs.subjectSpace() -- The subject namespace number. return mw.site.namespaces[env.title.namespace].subject.id end function envFuncs.docSpace() -- The documentation namespace number. For most namespaces this is the -- same as the subject namespace. However, pages in the Article, File, -- MediaWiki or Category namespaces must have their /doc, /sandbox and -- /testcases pages in talk space. local subjectSpace = env.subjectSpace if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then return subjectSpace + 1 else return subjectSpace end end function envFuncs.docpageBase() -- The base page of the /doc, /sandbox, and /testcases subpages. -- For some namespaces this is the talk page, rather than the template page. local templateTitle = env.templateTitle local docSpace = env.docSpace local docSpaceText = mw.site.namespaces[docSpace].name -- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon. return docSpaceText .. ':' .. templateTitle.text end function envFuncs.compareUrl() -- Diff link between the sandbox and the main template using [[Special:ComparePages]]. local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle if templateTitle.exists and sandboxTitle.exists then local compareUrl = mw.uri.fullUrl( 'Special:ComparePages', { page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} ) return tostring(compareUrl) else return nil end end return env end ---------------------------------------------------------------------------- -- Auxiliary templates ---------------------------------------------------------------------------- p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext') function p._getModuleWikitext(args, env) local currentTitle = mw.title.getCurrentTitle() if currentTitle.contentModel ~= 'Scribunto' then return end pcall(require, currentTitle.prefixedText) -- if it fails, we don't care local moduleWikitext = package.loaded["Module:Module wikitext"] if moduleWikitext then return moduleWikitext.main() end end function p.sandboxNotice(args, env) --[=[ -- Generates a sandbox notice for display above sandbox pages. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-notice-image' --> '[[File:Sandbox.svg|50px|alt=|link=]]' -- 'sandbox-notice-blurb' --> 'This is the $1 for $2.' -- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).' -- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page' -- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page' -- 'sandbox-notice-pagetype-other' --> 'sandbox page' -- 'sandbox-notice-compare-link-display' --> 'diff' -- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.' -- 'sandbox-notice-testcases-link-display' --> 'test cases' -- 'sandbox-category' --> 'Template sandboxes' --]=] local title = env.title local sandboxTitle = env.sandboxTitle local templateTitle = env.templateTitle local subjectSpace = env.subjectSpace if not (subjectSpace and title and sandboxTitle and templateTitle and mw.title.equals(title, sandboxTitle)) then return nil end -- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text". local omargs = {} omargs.image = message('sandbox-notice-image') -- Get the text. We start with the opening blurb, which is something like -- "This is the template sandbox for [[Template:Foo]] (diff)." local text = '' local pagetype if subjectSpace == 10 then pagetype = message('sandbox-notice-pagetype-template') elseif subjectSpace == 828 then pagetype = message('sandbox-notice-pagetype-module') else pagetype = message('sandbox-notice-pagetype-other') end local templateLink = makeWikilink(templateTitle.prefixedText) local compareUrl = env.compareUrl if compareUrl then local compareDisplay = message('sandbox-notice-compare-link-display') local compareLink = makeUrlLink(compareUrl, compareDisplay) text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink}) else text = text .. message('sandbox-notice-blurb', {pagetype, templateLink}) end -- Get the test cases page blurb if the page exists. This is something like -- "See also the companion subpage for [[Template:Foo/testcases|test cases]]." local testcasesTitle = env.testcasesTitle if testcasesTitle and testcasesTitle.exists then if testcasesTitle.contentModel == "Scribunto" then local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink}) else local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink}) end end -- Add the sandbox to the sandbox category. omargs.text = text .. makeCategoryLink(message('sandbox-category')) -- 'documentation-clear' return '<div class="' .. message('clear') .. '"></div>' .. require('Module:Message box').main('ombox', omargs) end function p.protectionTemplate(env) -- Generates the padlock icon in the top right. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'protection-template' --> 'pp-template' -- 'protection-template-args' --> {docusage = 'yes'} local protectionLevels = env.protectionLevels if not protectionLevels then return nil end local editProt = protectionLevels.edit and protectionLevels.edit[1] local moveProt = protectionLevels.move and protectionLevels.move[1] if editProt then -- The page is edit-protected. return require('Module:Protection banner')._main{ message('protection-reason-edit'), small = true } elseif moveProt and moveProt ~= 'autoconfirmed' then -- The page is move-protected but not edit-protected. Exclude move -- protection with the level "autoconfirmed", as this is equivalent to -- no move protection at all. return require('Module:Protection banner')._main{ action = 'move', small = true } else return nil end end ---------------------------------------------------------------------------- -- Start box ---------------------------------------------------------------------------- p.startBox = makeInvokeFunc('_startBox') function p._startBox(args, env) --[[ -- This function generates the start box. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make -- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox -- which generate the box HTML. --]] env = env or p.getEnvironment(args) local links local content = args.content if not content or args[1] then -- No need to include the links if the documentation is on the template page itself. local linksData = p.makeStartBoxLinksData(args, env) if linksData then links = p.renderStartBoxLinks(linksData) end end -- Generate the start box html. local data = p.makeStartBoxData(args, env, links) if data then return p.renderStartBox(data) else -- User specified no heading. return nil end end function p.makeStartBoxLinksData(args, env) --[[ -- Does initial processing of data to make the [view] [edit] [history] [purge] links. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'view-link-display' --> 'view' -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'purge-link-display' --> 'purge' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'docpage-preload' --> 'Template:Documentation/preload' -- 'create-link-display' --> 'create' --]] local subjectSpace = env.subjectSpace local title = env.title local docTitle = env.docTitle if not title or not docTitle then return nil end if docTitle.isRedirect then docTitle = docTitle.redirectTarget end local data = {} data.title = title data.docTitle = docTitle -- View, display, edit, and purge links if /doc exists. data.viewLinkDisplay = message('view-link-display') data.editLinkDisplay = message('edit-link-display') data.historyLinkDisplay = message('history-link-display') data.purgeLinkDisplay = message('purge-link-display') -- Create link if /doc doesn't exist. local preload = args.preload if not preload then if subjectSpace == 828 then -- Module namespace preload = message('module-preload') else preload = message('docpage-preload') end end data.preload = preload data.createLinkDisplay = message('create-link-display') return data end function p.renderStartBoxLinks(data) --[[ -- Generates the [view][edit][history][purge] or [create][purge] links from the data table. -- @data - a table of data generated by p.makeStartBoxLinksData --]] local function escapeBrackets(s) -- Escapes square brackets with HTML entities. s = s:gsub('%[', '&#91;') -- Replace square brackets with HTML entities. s = s:gsub('%]', '&#93;') return s end local ret local docTitle = data.docTitle local title = data.title local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay) if docTitle.exists then local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay) local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay) local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay) ret = '[%s] [%s] [%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink) else local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay) ret = '[%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, createLink, purgeLink) end return ret end function p.makeStartBoxData(args, env, links) --[=[ -- Does initial processing of data to pass to the start-box render function, p.renderStartBox. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error. -- -- Messages: -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- 'template-namespace-heading' --> 'Template documentation' -- 'module-namespace-heading' --> 'Module documentation' -- 'file-namespace-heading' --> 'Summary' -- 'other-namespaces-heading' --> 'Documentation' -- 'testcases-create-link-display' --> 'create' --]=] local subjectSpace = env.subjectSpace if not subjectSpace then -- Default to an "other namespaces" namespace, so that we get at least some output -- if an error occurs. subjectSpace = 2 end local data = {} -- Heading local heading = args.heading -- Blank values are not removed. if heading == '' then -- Don't display the start box if the heading arg is defined but blank. return nil end if heading then data.heading = heading elseif subjectSpace == 10 then -- Template namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading') elseif subjectSpace == 828 then -- Module namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading') elseif subjectSpace == 6 then -- File namespace data.heading = message('file-namespace-heading') else data.heading = message('other-namespaces-heading') end -- Heading CSS local headingStyle = args['heading-style'] if headingStyle then data.headingStyleText = headingStyle else -- 'documentation-heading' data.headingClass = message('main-div-heading-class') end -- Data for the [view][edit][history][purge] or [create] links. if links then -- 'mw-editsection-like plainlinks' data.linksClass = message('start-box-link-classes') data.links = links end return data end function p.renderStartBox(data) -- Renders the start box html. -- @data - a table of data generated by p.makeStartBoxData. local sbox = mw.html.create('div') sbox -- 'documentation-startbox' :addClass(message('start-box-class')) :newline() :tag('span') :addClass(data.headingClass) :attr('id', 'documentation-heading') :cssText(data.headingStyleText) :wikitext(data.heading) local links = data.links if links then sbox:tag('span') :addClass(data.linksClass) :attr('id', data.linksId) :wikitext(links) end return tostring(sbox) end ---------------------------------------------------------------------------- -- Documentation content ---------------------------------------------------------------------------- p.content = makeInvokeFunc('_content') function p._content(args, env) -- Displays the documentation contents -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment env = env or p.getEnvironment(args) local docTitle = env.docTitle local content = args.content if not content and docTitle and docTitle.exists then content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText} end -- The line breaks below are necessary so that "=== Headings ===" at the start and end -- of docs are interpreted correctly. return '\n' .. (content or '') .. '\n' end p.contentTitle = makeInvokeFunc('_contentTitle') function p._contentTitle(args, env) env = env or p.getEnvironment(args) local docTitle = env.docTitle if not args.content and docTitle and docTitle.exists then return docTitle.prefixedText else return '' end end ---------------------------------------------------------------------------- -- End box ---------------------------------------------------------------------------- p.endBox = makeInvokeFunc('_endBox') function p._endBox(args, env) --[=[ -- This function generates the end box (also known as the link box). -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- --]=] -- Get environment data. env = env or p.getEnvironment(args) local subjectSpace = env.subjectSpace local docTitle = env.docTitle if not subjectSpace or not docTitle then return nil end -- Check whether we should output the end box at all. Add the end -- box by default if the documentation exists or if we are in the -- user, module or template namespaces. local linkBox = args['link box'] if linkBox == 'off' or not ( docTitle.exists or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 ) then return nil end -- Assemble the link box. local text = '' if linkBox then text = text .. linkBox else text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]." if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then -- We are in the user, template or module namespaces. -- Add sandbox and testcases links. -- "Editors can experiment in this template's sandbox and testcases pages." text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />' if not args.content and not args[1] then -- "Please add categories to the /doc subpage." -- Don't show this message with inline docs or with an explicitly specified doc page, -- as then it is unclear where to add the categories. text = text .. (p.makeCategoriesBlurb(args, env) or '') end text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template" end end local box = mw.html.create('div') -- 'documentation-metadata' box:attr('role', 'note') :addClass(message('end-box-class')) -- 'plainlinks' :addClass(message('end-box-plainlinks')) :wikitext(text) :done() return '\n' .. tostring(box) end function p.makeDocPageBlurb(args, env) --[=[ -- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)". -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'transcluded-from-blurb' --> -- 'The above [[Wikipedia:Template documentation|documentation]] -- is [[Help:Transclusion|transcluded]] from $1.' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'create-link-display' --> 'create' -- 'create-module-doc-blurb' --> -- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' --]=] local docTitle = env.docTitle if not docTitle then return nil end local ret if docTitle.exists then -- /doc exists; link to it. local docLink = makeWikilink(docTitle.prefixedText) local editUrl = docTitle:fullUrl{action = 'edit'} local editDisplay = message('edit-link-display') local editLink = makeUrlLink(editUrl, editDisplay) local historyUrl = docTitle:fullUrl{action = 'history'} local historyDisplay = message('history-link-display') local historyLink = makeUrlLink(historyUrl, historyDisplay) ret = message('transcluded-from-blurb', {docLink}) .. ' ' .. makeToolbar(editLink, historyLink) .. '<br />' elseif env.subjectSpace == 828 then -- /doc does not exist; ask to create it. local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')} local createDisplay = message('create-link-display') local createLink = makeUrlLink(createUrl, createDisplay) ret = message('create-module-doc-blurb', {createLink}) .. '<br />' end return ret end function p.makeExperimentBlurb(args, env) --[[ -- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-link-display' --> 'sandbox' -- 'sandbox-edit-link-display' --> 'edit' -- 'compare-link-display' --> 'diff' -- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'sandbox-create-link-display' --> 'create' -- 'mirror-edit-summary' --> 'Create sandbox version of $1' -- 'mirror-link-display' --> 'mirror' -- 'mirror-link-preload' --> 'Template:Documentation/mirror' -- 'sandbox-link-display' --> 'sandbox' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display'--> 'edit' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'testcases-create-link-display' --> 'create' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display' --> 'edit' -- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases' -- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases' -- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.' -- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle local testcasesTitle = env.testcasesTitle local templatePage = templateTitle.prefixedText if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then return nil end -- Make links. local sandboxLinks, testcasesLinks if sandboxTitle.exists then local sandboxPage = sandboxTitle.prefixedText local sandboxDisplay = message('sandbox-link-display') local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay) local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'} local sandboxEditDisplay = message('sandbox-edit-link-display') local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay) local compareUrl = env.compareUrl local compareLink if compareUrl then local compareDisplay = message('compare-link-display') compareLink = makeUrlLink(compareUrl, compareDisplay) end sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink) else local sandboxPreload if subjectSpace == 828 then sandboxPreload = message('module-sandbox-preload') else sandboxPreload = message('template-sandbox-preload') end local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload} local sandboxCreateDisplay = message('sandbox-create-link-display') local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)}) local mirrorPreload = message('mirror-link-preload') local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} if subjectSpace == 828 then mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary} end local mirrorDisplay = message('mirror-link-display') local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) end if testcasesTitle.exists then local testcasesPage = testcasesTitle.prefixedText local testcasesDisplay = message('testcases-link-display') local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay) local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'} local testcasesEditDisplay = message('testcases-edit-link-display') local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) -- for Modules, add testcases run link if exists if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then local testcasesRunLinkDisplay = message('testcases-run-link-display') local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink) else testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) end else local testcasesPreload if subjectSpace == 828 then testcasesPreload = message('module-testcases-preload') else testcasesPreload = message('template-testcases-preload') end local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload} local testcasesCreateDisplay = message('testcases-create-link-display') local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink) end local messageName if subjectSpace == 828 then messageName = 'experiment-blurb-module' else messageName = 'experiment-blurb-template' end return message(messageName, {sandboxLinks, testcasesLinks}) end function p.makeCategoriesBlurb(args, env) --[[ -- Generates the text "Please add categories to the /doc subpage." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'doc-link-display' --> '/doc' -- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.' --]] local docTitle = env.docTitle if not docTitle then return nil end local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display')) return message('add-categories-blurb', {docPathLink}) end function p.makeSubpagesBlurb(args, env) --[[ -- Generates the "Subpages of this template" link. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'template-pagetype' --> 'template' -- 'module-pagetype' --> 'module' -- 'default-pagetype' --> 'page' -- 'subpages-link-display' --> 'Subpages of this $1' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle if not subjectSpace or not templateTitle then return nil end local pagetype if subjectSpace == 10 then pagetype = message('template-pagetype') elseif subjectSpace == 828 then pagetype = message('module-pagetype') else pagetype = message('default-pagetype') end local subpagesLink = makeWikilink( 'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', message('subpages-link-display', {pagetype}) ) return message('subpages-blurb', {subpagesLink}) end ---------------------------------------------------------------------------- -- Tracking categories ---------------------------------------------------------------------------- function p.addTrackingCategories(env) --[[ -- Check if {{documentation}} is transcluded on a /doc or /testcases page. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'display-strange-usage-category' --> true -- 'doc-subpage' --> 'doc' -- 'testcases-subpage' --> 'testcases' -- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage' -- -- /testcases pages in the module namespace are not categorised, as they may have -- {{documentation}} transcluded automatically. --]] local title = env.title local subjectSpace = env.subjectSpace if not title or not subjectSpace then return nil end local subpage = title.subpageText local ret = '' if message('display-strange-usage-category', nil, 'boolean') and ( subpage == message('doc-subpage') or subjectSpace ~= 828 and subpage == message('testcases-subpage') ) then ret = ret .. makeCategoryLink(message('strange-usage-category')) end return ret end return p 2fd7faef98df56f55eede30c4ff07b2431823ee1 Module:Documentation/config 828 213 426 425 2023-01-16T18:15:42Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain ---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------------------------- local cfg = {} -- Do not edit this line. ---------------------------------------------------------------------------------------------------- -- Protection template configuration ---------------------------------------------------------------------------------------------------- -- cfg['protection-reason-edit'] -- The protection reason for edit-protected templates to pass to -- [[Module:Protection banner]]. cfg['protection-reason-edit'] = 'template' --[[ ---------------------------------------------------------------------------------------------------- -- Sandbox notice configuration -- -- On sandbox pages the module can display a template notifying users that the current page is a -- sandbox, and the location of test cases pages, etc. The module decides whether the page is a -- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the -- messages that the notices contains. ---------------------------------------------------------------------------------------------------- --]] -- cfg['sandbox-notice-image'] -- The image displayed in the sandbox notice. cfg['sandbox-notice-image'] = '[[File:Sandbox.svg|50px|alt=|link=]]' --[[ -- cfg['sandbox-notice-pagetype-template'] -- cfg['sandbox-notice-pagetype-module'] -- cfg['sandbox-notice-pagetype-other'] -- The page type of the sandbox page. The message that is displayed depends on the current subject -- namespace. This message is used in either cfg['sandbox-notice-blurb'] or -- cfg['sandbox-notice-diff-blurb']. --]] cfg['sandbox-notice-pagetype-template'] = '[[Wikipedia:Template test cases|template sandbox]] page' cfg['sandbox-notice-pagetype-module'] = '[[Wikipedia:Template test cases|module sandbox]] page' cfg['sandbox-notice-pagetype-other'] = 'sandbox page' --[[ -- cfg['sandbox-notice-blurb'] -- cfg['sandbox-notice-diff-blurb'] -- cfg['sandbox-notice-diff-display'] -- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence -- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page -- type, which is either cfg['sandbox-notice-pagetype-template'], -- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what -- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between -- the sandbox and the main template. The display value of the diff link is set by -- cfg['sandbox-notice-compare-link-display']. --]] cfg['sandbox-notice-blurb'] = 'This is the $1 for $2.' cfg['sandbox-notice-diff-blurb'] = 'This is the $1 for $2 ($3).' cfg['sandbox-notice-compare-link-display'] = 'diff' --[[ -- cfg['sandbox-notice-testcases-blurb'] -- cfg['sandbox-notice-testcases-link-display'] -- cfg['sandbox-notice-testcases-run-blurb'] -- cfg['sandbox-notice-testcases-run-link-display'] -- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit. $1 is a link to the test cases page. -- cfg['sandbox-notice-testcases-link-display'] is the display value for that link. -- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test -- cases page, and $2 is a link to the page to run it. -- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test -- cases. --]] cfg['sandbox-notice-testcases-blurb'] = 'See also the companion subpage for $1.' cfg['sandbox-notice-testcases-link-display'] = 'test cases' cfg['sandbox-notice-testcases-run-blurb'] = 'See also the companion subpage for $1 ($2).' cfg['sandbox-notice-testcases-run-link-display'] = 'run' -- cfg['sandbox-category'] -- A category to add to all template sandboxes. cfg['sandbox-category'] = 'Template sandboxes' ---------------------------------------------------------------------------------------------------- -- Start box configuration ---------------------------------------------------------------------------------------------------- -- cfg['documentation-icon-wikitext'] -- The wikitext for the icon shown at the top of the template. cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- cfg['template-namespace-heading'] -- The heading shown in the template namespace. cfg['template-namespace-heading'] = 'Template documentation' -- cfg['module-namespace-heading'] -- The heading shown in the module namespace. cfg['module-namespace-heading'] = 'Module documentation' -- cfg['file-namespace-heading'] -- The heading shown in the file namespace. cfg['file-namespace-heading'] = 'Summary' -- cfg['other-namespaces-heading'] -- The heading shown in other namespaces. cfg['other-namespaces-heading'] = 'Documentation' -- cfg['view-link-display'] -- The text to display for "view" links. cfg['view-link-display'] = 'view' -- cfg['edit-link-display'] -- The text to display for "edit" links. cfg['edit-link-display'] = 'edit' -- cfg['history-link-display'] -- The text to display for "history" links. cfg['history-link-display'] = 'history' -- cfg['purge-link-display'] -- The text to display for "purge" links. cfg['purge-link-display'] = 'purge' -- cfg['create-link-display'] -- The text to display for "create" links. cfg['create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Link box (end box) configuration ---------------------------------------------------------------------------------------------------- -- cfg['transcluded-from-blurb'] -- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page. cfg['transcluded-from-blurb'] = 'The above [[Wikipedia:Template documentation|documentation]] is [[Help:Transclusion|transcluded]] from $1.' --[[ -- cfg['create-module-doc-blurb'] -- Notice displayed in the module namespace when the documentation subpage does not exist. -- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the -- display cfg['create-link-display']. --]] cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' ---------------------------------------------------------------------------------------------------- -- Experiment blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['experiment-blurb-template'] -- cfg['experiment-blurb-module'] -- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages. -- It is only shown in the template and module namespaces. With the default English settings, it -- might look like this: -- -- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages. -- -- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links. -- -- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending -- on what namespace we are in. -- -- Parameters: -- -- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display']) -- -- If the sandbox doesn't exist, it is in the format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display']) -- -- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload'] -- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display'] -- loads a default edit summary of cfg['mirror-edit-summary']. -- -- $2 is a link to the test cases page. If the test cases page exists, it is in the following format: -- -- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display']) -- -- If the test cases page doesn't exist, it is in the format: -- -- cfg['testcases-link-display'] (cfg['testcases-create-link-display']) -- -- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the -- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current -- namespace. --]] cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages." cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages." ---------------------------------------------------------------------------------------------------- -- Sandbox link configuration ---------------------------------------------------------------------------------------------------- -- cfg['sandbox-subpage'] -- The name of the template subpage typically used for sandboxes. cfg['sandbox-subpage'] = 'sandbox' -- cfg['template-sandbox-preload'] -- Preload file for template sandbox pages. cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox' -- cfg['module-sandbox-preload'] -- Preload file for Lua module sandbox pages. cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox' -- cfg['sandbox-link-display'] -- The text to display for "sandbox" links. cfg['sandbox-link-display'] = 'sandbox' -- cfg['sandbox-edit-link-display'] -- The text to display for sandbox "edit" links. cfg['sandbox-edit-link-display'] = 'edit' -- cfg['sandbox-create-link-display'] -- The text to display for sandbox "create" links. cfg['sandbox-create-link-display'] = 'create' -- cfg['compare-link-display'] -- The text to display for "compare" links. cfg['compare-link-display'] = 'diff' -- cfg['mirror-edit-summary'] -- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the -- template page. cfg['mirror-edit-summary'] = 'Create sandbox version of $1' -- cfg['mirror-link-display'] -- The text to display for "mirror" links. cfg['mirror-link-display'] = 'mirror' -- cfg['mirror-link-preload'] -- The page to preload when a user clicks the "mirror" link. cfg['mirror-link-preload'] = 'Template:Documentation/mirror' ---------------------------------------------------------------------------------------------------- -- Test cases link configuration ---------------------------------------------------------------------------------------------------- -- cfg['testcases-subpage'] -- The name of the template subpage typically used for test cases. cfg['testcases-subpage'] = 'testcases' -- cfg['template-testcases-preload'] -- Preload file for template test cases pages. cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases' -- cfg['module-testcases-preload'] -- Preload file for Lua module test cases pages. cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases' -- cfg['testcases-link-display'] -- The text to display for "testcases" links. cfg['testcases-link-display'] = 'testcases' -- cfg['testcases-edit-link-display'] -- The text to display for test cases "edit" links. cfg['testcases-edit-link-display'] = 'edit' -- cfg['testcases-run-link-display'] -- The text to display for test cases "run" links. cfg['testcases-run-link-display'] = 'run' -- cfg['testcases-create-link-display'] -- The text to display for test cases "create" links. cfg['testcases-create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Add categories blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['add-categories-blurb'] -- Text to direct users to add categories to the /doc subpage. Not used if the "content" or -- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a -- link to the /doc subpage with a display value of cfg['doc-link-display']. --]] cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.' -- cfg['doc-link-display'] -- The text to display when linking to the /doc subpage. cfg['doc-link-display'] = '/doc' ---------------------------------------------------------------------------------------------------- -- Subpages link configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['subpages-blurb'] -- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a -- display value of cfg['subpages-link-display']. In the English version this blurb is simply -- the link followed by a period, and the link display provides the actual text. --]] cfg['subpages-blurb'] = '$1.' --[[ -- cfg['subpages-link-display'] -- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'], -- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in -- the template namespace, the module namespace, or another namespace. --]] cfg['subpages-link-display'] = 'Subpages of this $1' -- cfg['template-pagetype'] -- The pagetype to display for template pages. cfg['template-pagetype'] = 'template' -- cfg['module-pagetype'] -- The pagetype to display for Lua module pages. cfg['module-pagetype'] = 'module' -- cfg['default-pagetype'] -- The pagetype to display for pages other than templates or Lua modules. cfg['default-pagetype'] = 'page' ---------------------------------------------------------------------------------------------------- -- Doc link configuration ---------------------------------------------------------------------------------------------------- -- cfg['doc-subpage'] -- The name of the subpage typically used for documentation pages. cfg['doc-subpage'] = 'doc' -- cfg['docpage-preload'] -- Preload file for template documentation pages in all namespaces. cfg['docpage-preload'] = 'Template:Documentation/preload' -- cfg['module-preload'] -- Preload file for Lua module documentation pages. cfg['module-preload'] = 'Template:Documentation/preload-module-doc' ---------------------------------------------------------------------------------------------------- -- HTML and CSS configuration ---------------------------------------------------------------------------------------------------- -- cfg['templatestyles'] -- The name of the TemplateStyles page where CSS is kept. -- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed. cfg['templatestyles'] = 'Module:Documentation/styles.css' -- cfg['container'] -- Class which can be used to set flex or grid CSS on the -- two child divs documentation and documentation-metadata cfg['container'] = 'documentation-container' -- cfg['main-div-classes'] -- Classes added to the main HTML "div" tag. cfg['main-div-classes'] = 'documentation' -- cfg['main-div-heading-class'] -- Class for the main heading for templates and modules and assoc. talk spaces cfg['main-div-heading-class'] = 'documentation-heading' -- cfg['start-box-class'] -- Class for the start box cfg['start-box-class'] = 'documentation-startbox' -- cfg['start-box-link-classes'] -- Classes used for the [view][edit][history] or [create] links in the start box. -- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]] cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks' -- cfg['end-box-class'] -- Class for the end box. cfg['end-box-class'] = 'documentation-metadata' -- cfg['end-box-plainlinks'] -- Plainlinks cfg['end-box-plainlinks'] = 'plainlinks' -- cfg['toolbar-class'] -- Class added for toolbar links. cfg['toolbar-class'] = 'documentation-toolbar' -- cfg['clear'] -- Just used to clear things. cfg['clear'] = 'documentation-clear' ---------------------------------------------------------------------------------------------------- -- Tracking category configuration ---------------------------------------------------------------------------------------------------- -- cfg['display-strange-usage-category'] -- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage -- or a /testcases subpage. This should be a boolean value (either true or false). cfg['display-strange-usage-category'] = true -- cfg['strange-usage-category'] -- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a -- /doc subpage or a /testcases subpage. cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage' --[[ ---------------------------------------------------------------------------------------------------- -- End configuration -- -- Don't edit anything below this line. ---------------------------------------------------------------------------------------------------- --]] return cfg 71b68ed73088f1a59d61acf06bbee9fde6677f03 Module:Documentation/styles.css 828 214 428 427 2023-01-16T18:15:43Z BEELETH 2 1 revision imported: Import from Wikipedia text text/plain /* {{pp|small=yes}} */ .documentation, .documentation-metadata { border: 1px solid #a2a9b1; background-color: #ecfcf4; clear: both; } .documentation { margin: 1em 0 0 0; padding: 1em; } .documentation-metadata { margin: 0.2em 0; /* same margin left-right as .documentation */ font-style: italic; padding: 0.4em 1em; /* same padding left-right as .documentation */ } .documentation-startbox { padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bottom: 1ex; } .documentation-heading { font-weight: bold; font-size: 125%; } .documentation-clear { /* Don't want things to stick out where they shouldn't. */ clear: both; } .documentation-toolbar { font-style: normal; font-size: 85%; } ce0e629c92e3d825ab9fd927fe6cc37d9117b6cb Template:Sandbox other 10 215 430 429 2023-01-16T18:15:43Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki {{#if:{{#ifeq:{{#invoke:String|sublength|s={{SUBPAGENAME}}|i=0|len=7}}|sandbox|1}}{{#ifeq:{{SUBPAGENAME}}|doc|1}}{{#invoke:String|match|{{PAGENAME}}|/sandbox/styles.css$|plain=false|nomatch=}}|{{{1|}}}|{{{2|}}}}}<!-- --><noinclude>{{documentation}}</noinclude> 91e4ae891d6b791615152c1fbc971414961ba872 Template:Documentation subpage 10 216 432 431 2023-01-16T18:15:43Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki <includeonly><!-- -->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}} | <!--(this template has been transcluded on a /doc or /{{{override}}} page)--> </includeonly><!-- -->{{#ifeq:{{{doc-notice|show}}} |show | {{Mbox | type = notice | style = margin-bottom:1.0em; | image = [[File:Edit-copy green.svg|40px|alt=|link=]] | text = {{strong|This is a [[Wikipedia:Template documentation|documentation]] [[Wikipedia:Subpages|subpage]]}} for {{terminate sentence|{{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}}}<br />It contains usage information, [[Wikipedia:Categorization|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} |{{#ifeq:{{SUBJECTSPACE}} |{{ns:User}} |{{lc:{{SUBJECTSPACE}}}} template page |{{#if:{{SUBJECTSPACE}} |{{lc:{{SUBJECTSPACE}}}} page|article}}}}}}}}. }} }}<!-- -->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!-- -->{{#if:{{{inhibit|}}} |<!--(don't categorize)--> | <includeonly><!-- -->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}} | [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]] | [[Category:Documentation subpages without corresponding pages]] }}<!-- --></includeonly> }}<!-- (completing initial #ifeq: at start of template:) --><includeonly> | <!--(this template has not been transcluded on a /doc or /{{{override}}} page)--> }}<!-- --></includeonly><noinclude>{{Documentation}}</noinclude> 932915be87123dcf74687ffca846a3130a6a52af Template:Template link with link off 10 217 434 433 2023-01-16T18:15:44Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki <includeonly>{{#Invoke:Template link general|main|nowrap=yes|nolink=yes}}</includeonly><noinclude> {{Documentation|1=Template:Tlg/doc |content = {{tlg/doc|tlf}} }} <!-- Add categories to the /doc subpage, not here! --> </noinclude> b099fea5d1f36b0b4b9cb253ad3a9f4e095f6851 Template:Tlf 10 218 436 435 2023-01-16T18:15:44Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki #REDIRECT [[Template:Template link with link off]] {{Redirect category shell| {{R from move}} }} 52759e1d3f7c9aa4a03d0b7d4f84f4c6adf53edf Template:High-use 10 219 438 437 2023-01-16T18:15:44Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki {{#invoke:High-use|main|1={{{1|}}}|2={{{2|}}}|info={{{info|}}}|demo={{{demo|}}}|form={{{form|}}}|expiry={{{expiry|}}}|system={{{system|}}}}}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage; interwiki links go to Wikidata, thank you! --> </noinclude> a3322d1bd47ac03df14fa2090855cff4fede9bc7 Template:TemplateData header 10 220 440 439 2023-01-16T18:15:45Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki <div class="templatedata-header">{{#if:{{{noheader|}}}|<!-- noheader: -->{{Template parameter usage|based=y}}|<!-- +header: -->This is the {{#if:{{{nolink|}}}|<!-- +header, nolink TD -->TemplateData|<!-- +header, +link [[TD]]; DEFAULT: -->[[Wikipedia:TemplateData|TemplateData]]}}<!-- e.o. #if:nolink; DEFAULT: --> for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools. {{Template parameter usage|based=y}}<!-- e.o. #if:noheader -->}} '''TemplateData for {{{1|{{BASEPAGENAME}}}}}''' </div><includeonly><!-- check parameters -->{{#invoke:Check for unknown parameters|check |unknown={{template other|1=[[Category:Pages using TemplateData header with unknown parameters|_VALUE_]]}} |template=Template:TemplateData header |1 |nolink |noheader |preview=<div class="error" style="font-weight:normal">Unknown parameter '_VALUE_' in [[Template:TemplateData header]].</div> }}<!-- -->{{template other|{{sandbox other|| [[Category:Templates using TemplateData]] }}}}</includeonly><!-- --><noinclude>{{Documentation}}</noinclude> ddfbb4ae793846b96d4c06330417fa6ed4da2adc Template:Template parameter usage 10 221 442 441 2023-01-16T18:15:45Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki {{#switch:{{{label|}}} |=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|C|c}}lick here] to see a monthly parameter usage report for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|this template}}{{#ifeq:{{yesno-no|{{{based}}}}}|yes|&#32;based on {{#if:{{{1|}}}|its|this}} TemplateData}}. |None|none=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|P|p}}arameter usage report]{{#ifeq:{{yesno-no|{{{based}}}}}|yes|&#32;based on {{#if:{{{1|}}}|its|this}} TemplateData}} |for|For=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|P|p}}arameter usage report] for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|[[Template:{{ROOTPAGENAME}}]]}}{{#ifeq:{{yesno-no|{{{based}}}}}|yes|&#32;based on {{#if:{{{1|}}}|its|this}} TemplateData}}. |#default=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{{label|}}}]{{#ifeq:{{yesno-no|{{{based}}}}}|yes|&#32;based on {{#if:{{{1|}}}|its|this}} TemplateData}} }}<noinclude> {{documentation}} </noinclude> b9cdd1b2e409313904f041c38562a3d6221cc017 Module:High-use 828 222 444 443 2023-01-16T18:15:45Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain local p = {} -- _fetch looks at the "demo" argument. local _fetch = require('Module:Transclusion_count').fetch local yesno = require('Module:Yesno') function p.num(frame, count) if count == nil then if yesno(frame.args['fetch']) == false then if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end else count = _fetch(frame) end end -- Build output string local return_value = "" if count == nil then if frame.args[1] == "risk" then return_value = "a very large number of" else return_value = "many" end else -- Use 2 significant figures for smaller numbers and 3 for larger ones local sigfig = 2 if count >= 100000 then sigfig = 3 end -- Prepare to round to appropriate number of sigfigs local f = math.floor(math.log10(count)) - sigfig + 1 -- Round and insert "approximately" or "+" when appropriate if (frame.args[2] == "yes") or (mw.ustring.sub(frame.args[1],-1) == "+") then -- Round down return_value = string.format("%s+", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) ) * (10^(f))) ) else -- Round to nearest return_value = string.format("approximately&#x20;%s", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) + 0.5) * (10^(f))) ) end -- Insert percentage of pages if that is likely to be >= 1% and when |no-percent= not set to yes if count and count > 250000 and not yesno (frame:getParent().args['no-percent']) then local percent = math.floor( ( (count/frame:callParserFunction('NUMBEROFPAGES', 'R') ) * 100) + 0.5) if percent >= 1 then return_value = string.format("%s&#x20;pages, or roughly %s%% of all", return_value, percent) end end end return return_value end -- Actions if there is a large (greater than or equal to 100,000) transclusion count function p.risk(frame) local return_value = "" if frame.args[1] == "risk" then return_value = "risk" else local count = _fetch(frame) if count and count >= 100000 then return_value = "risk" end end return return_value end function p.text(frame, count) -- Only show the information about how this template gets updated if someone -- is actually editing the page and maybe trying to update the count. local bot_text = (frame:preprocess("{{REVISIONID}}") == "") and "\n\n----\n'''Preview message''': Transclusion count updated automatically ([[Template:High-use/doc#Technical details|see documentation]])." or '' if count == nil then if yesno(frame.args['fetch']) == false then if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end else count = _fetch(frame) end end local title = mw.title.getCurrentTitle() if title.subpageText == "doc" or title.subpageText == "sandbox" then title = title.basePageTitle end local systemMessages = frame.args['system'] if frame.args['system'] == '' then systemMessages = nil end -- This retrieves the project URL automatically to simplify localiation. local templateCount = ('on [https://linkcount.toolforge.org/index.php?project=%s&page=%s %s pages]'):format( mw.title.getCurrentTitle():fullUrl():gsub('//(.-)/.*', '%1'), mw.uri.encode(title.fullText), p.num(frame, count)) local used_on_text = "'''This " .. (mw.title.getCurrentTitle().namespace == 828 and "Lua module" or "template") .. ' is used '; if systemMessages then used_on_text = used_on_text .. systemMessages .. ((count and count > 2000) and ("''', and " .. templateCount) or ("'''")) else used_on_text = used_on_text .. templateCount .. "'''" end local sandbox_text = ("%s's [[%s/sandbox|/sandbox]] or [[%s/testcases|/testcases]] subpages, or in your own [[%s]]. "):format( (mw.title.getCurrentTitle().namespace == 828 and "module" or "template"), title.fullText, title.fullText, mw.title.getCurrentTitle().namespace == 828 and "Module:Sandbox|module sandbox" or "Wikipedia:User pages#SUB|user subpage" ) local infoArg = frame.args["info"] ~= "" and frame.args["info"] if (systemMessages or frame.args[1] == "risk" or (count and count >= 100000) ) then local info = systemMessages and '.<br/>Changes to it can cause immediate changes to the Wikipedia user interface.' or '.' if infoArg then info = info .. "<br />" .. infoArg end sandbox_text = info .. '<br /> To avoid major disruption' .. (count and count >= 100000 and ' and server load' or '') .. ', any changes should be tested in the ' .. sandbox_text .. 'The tested changes can be added to this page in a single edit. ' else sandbox_text = (infoArg and ('.<br />' .. infoArg .. ' C') or ' and c') .. 'hanges may be widely noticed. Test changes in the ' .. sandbox_text end local discussion_text = systemMessages and 'Please discuss changes ' or 'Consider discussing changes ' if frame.args["2"] and frame.args["2"] ~= "" and frame.args["2"] ~= "yes" then discussion_text = string.format("%sat [[%s]]", discussion_text, frame.args["2"]) else discussion_text = string.format("%son the [[%s|talk page]]", discussion_text, title.talkPageTitle.fullText ) end return used_on_text .. sandbox_text .. discussion_text .. " before implementing them." .. bot_text end function p.main(frame) local count = nil if yesno(frame.args['fetch']) == false then if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end else count = _fetch(frame) end local image = "[[File:Ambox warning yellow.svg|40px|alt=Warning|link=]]" local type_param = "style" local epilogue = '' if frame.args['system'] and frame.args['system'] ~= '' then image = "[[File:Ambox important.svg|40px|alt=Warning|link=]]" type_param = "content" local nocat = frame:getParent().args['nocat'] or frame.args['nocat'] local categorise = (nocat == '' or not yesno(nocat)) if categorise then epilogue = frame:preprocess('{{Sandbox other||{{#switch:{{#invoke:Effective protection level|{{#switch:{{NAMESPACE}}|File=upload|#default=edit}}|{{FULLPAGENAME}}}}|sysop|templateeditor|interfaceadmin=|#default=[[Category:Pages used in system messages needing protection]]}}}}') end elseif (frame.args[1] == "risk" or (count and count >= 100000)) then image = "[[File:Ambox warning orange.svg|40px|alt=Warning|link=]]" type_param = "content" end if frame.args["form"] == "editnotice" then return frame:expandTemplate{ title = 'editnotice', args = { ["image"] = image, ["text"] = p.text(frame, count), ["expiry"] = (frame.args["expiry"] or "") } } .. epilogue else return require('Module:Message box').main('ombox', { type = type_param, image = image, text = p.text(frame, count), expiry = (frame.args["expiry"] or "") }) .. epilogue end end return p e65a49e327a83e27b6a35ceff8dce344edee0840 Module:Transclusion count 828 223 446 445 2023-01-16T18:15:46Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain local p = {} function p.fetch(frame) local template = nil local return_value = nil -- Use demo parameter if it exists, otherswise use current template name local namespace = mw.title.getCurrentTitle().namespace if frame.args["demo"] and frame.args["demo"] ~= "" then template = mw.ustring.gsub(frame.args["demo"],"^[Tt]emplate:","") elseif namespace == 10 then -- Template namespace template = mw.title.getCurrentTitle().text elseif namespace == 828 then -- Module namespace template = (mw.site.namespaces[828].name .. ":" .. mw.title.getCurrentTitle().text) end -- If in template or module namespace, look up count in /data if template ~= nil then namespace = mw.title.new(template, "Template").namespace if namespace == 10 or namespace == 828 then template = mw.ustring.gsub(template, "/doc$", "") -- strip /doc from end template = mw.ustring.gsub(template, "/sandbox$", "") -- strip /sandbox from end local index = mw.ustring.sub(mw.title.new(template).text,1,1) local status, data = pcall(function () return(mw.loadData('Module:Transclusion_count/data/' .. (mw.ustring.find(index, "%a") and index or "other"))) end) if status then return_value = tonumber(data[mw.ustring.gsub(template, " ", "_")]) end end end -- If database value doesn't exist, use value passed to template if return_value == nil and frame.args[1] ~= nil then local arg1=mw.ustring.match(frame.args[1], '[%d,]+') if arg1 and arg1 ~= '' then return_value = tonumber(frame:callParserFunction('formatnum', arg1, 'R')) end end return return_value end -- Tabulate this data for [[Wikipedia:Database reports/Templates transcluded on the most pages]] function p.tabulate(frame) local list = {} for i = 65, 91 do local data = mw.loadData('Module:Transclusion count/data/' .. ((i == 91) and 'other' or string.char(i))) for name, count in pairs(data) do table.insert(list, {mw.title.new(name, "Template").fullText, count}) end end table.sort(list, function(a, b) return (a[2] == b[2]) and (a[1] < b[1]) or (a[2] > b[2]) end) local lang = mw.getContentLanguage(); for i = 1, #list do list[i] = ('|-\n| %d || [[%s]] || %s\n'):format(i, list[i][1]:gsub('_', ' '), lang:formatNum(list[i][2])) end return table.concat(list) end return p 000ef6bcbf7b66e727870b0c300c4009da300513 Module:Lua banner 828 224 448 447 2023-01-16T18:15:46Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain -- This module implements the {{lua}} template. local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local p = {} function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end function p._main(args) local modules = mTableTools.compressSparseArray(args) local box = p.renderBox(modules) local trackingCategories = p.renderTrackingCategories(args, modules) return box .. trackingCategories end function p.renderBox(modules) local boxArgs = {} if #modules < 1 then boxArgs.text = '<strong class="error">Error: no modules specified</strong>' else local moduleLinks = {} for i, module in ipairs(modules) do moduleLinks[i] = string.format('[[:%s]]', module) local maybeSandbox = mw.title.new(module .. '/sandbox') if maybeSandbox.exists then moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText) end end local moduleList = mList.makeList('bulleted', moduleLinks) local title = mw.title.getCurrentTitle() if title.subpageText == "doc" then title = title.basePageTitle end if title.contentModel == "Scribunto" then boxArgs.text = 'This module depends on the following other modules:' .. moduleList else boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList end end boxArgs.type = 'notice' boxArgs.small = true boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]' return mMessageBox.main('mbox', boxArgs) end function p.renderTrackingCategories(args, modules, titleObj) if yesno(args.nocat) then return '' end local cats = {} -- Error category if #modules < 1 then cats[#cats + 1] = 'Lua templates with errors' end -- Lua templates category titleObj = titleObj or mw.title.getCurrentTitle() local subpageBlacklist = { doc = true, sandbox = true, sandbox2 = true, testcases = true } if not subpageBlacklist[titleObj.subpageText] then local protCatName if titleObj.namespace == 10 then local category = args.category if not category then local categories = { ['Module:String'] = 'Templates based on the String Lua module', ['Module:Math'] = 'Templates based on the Math Lua module', ['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module', ['Module:Citation'] = 'Templates based on the Citation/CS1 Lua module' } categories['Module:Citation/CS1'] = categories['Module:Citation'] category = modules[1] and categories[modules[1]] category = category or 'Lua-based templates' end cats[#cats + 1] = category protCatName = "Templates using under-protected Lua modules" elseif titleObj.namespace == 828 then protCatName = "Modules depending on under-protected modules" end if not args.noprotcat and protCatName then local protLevels = { autoconfirmed = 1, extendedconfirmed = 2, templateeditor = 3, sysop = 4 } local currentProt if titleObj.id ~= 0 then -- id is 0 (page does not exist) if am previewing before creating a template. currentProt = titleObj.protectionLevels["edit"][1] end if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end for i, module in ipairs(modules) do if module ~= "WP:libraryUtil" then local moduleProt = mw.title.new(module).protectionLevels["edit"][1] if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end if moduleProt < currentProt then cats[#cats + 1] = protCatName break end end end end end for i, cat in ipairs(cats) do cats[i] = string.format('[[Category:%s]]', cat) end return table.concat(cats) end return p 6e3bedcc849ff22d4f702708965c39b97d7e8585 Module:Parameter names example 828 225 450 449 2023-01-16T18:15:46Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain -- This module implements {{parameter names example}}. local p = {} local function makeParam(s) local lb = '&#123;' local rb = '&#125;' return lb:rep(3) .. s .. rb:rep(3) end local function italicize(s) return "''" .. s .. "''" end local function plain(s) return s end function p._main(args, frame) -- Find how we want to format the arguments to the template. local formatFunc if args._display == 'italics' or args._display == 'italic' then formatFunc = italicize elseif args._display == 'plain' then formatFunc = plain else formatFunc = makeParam end -- Build the table of template arguments. local targs = {} for k, v in pairs(args) do if type(k) == 'number' then targs[v] = formatFunc(v) elseif not k:find('^_') then targs[k] = v end end targs['nocat'] = 'yes'; targs['categories'] = 'no'; targs['demo'] = 'yes'; -- Find the template name. local template if args._template then template = args._template else local currentTitle = mw.title.getCurrentTitle() if currentTitle.prefixedText:find('/sandbox$') then template = currentTitle.prefixedText else template = currentTitle.basePageTitle.prefixedText end end -- Call the template with the arguments. frame = frame or mw.getCurrentFrame() local success, result = pcall( frame.expandTemplate, frame, {title = template, args = targs} ) if success then return result else return '' end end function p.main(frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:Parameter names example' }) return p._main(args, frame) end return p 576eb8298850f4e4e62105ac740df295b7b7eb9e Template:Lua 10 226 452 451 2023-01-16T18:15:47Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki <includeonly>{{#invoke:Lua banner|main}}</includeonly><noinclude> {{Lua|Module:Lua banner}} {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> dba3962144dacd289dbc34f50fbe0a7bf6d7f2f7 Template:Parameter names example 10 227 454 453 2023-01-16T18:15:47Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki <includeonly>{{#invoke:Parameter names example|main}}</includeonly><noinclude> {{Documentation}} </noinclude> de1e29d6ebc113e9d1649ea6a976625885db8a2f Template:Category link with count 10 228 456 455 2023-01-16T18:15:48Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki [[:Category:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}|<!-- -->{{#if:{{{name|}}}|{{{name}}}|Category:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}}}<!-- -->]]&nbsp;({{PAGESINCATEGORY:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}|{{{2|all}}}}})<noinclude> {{Documentation}} </noinclude> f93f1540b8c157703bd6d24ae35c35bef745981d Module:Transclusion count/data/I 828 229 458 457 2023-01-16T18:15:48Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain return { ["IAAF_name"] = 2200, ["IAST"] = 5900, ["IBDB_name"] = 9000, ["ICD10"] = 4600, ["ICD9"] = 4400, ["ICS"] = 2800, ["IDN"] = 3200, ["IMDb_episode"] = 9500, ["IMDb_episodes"] = 2400, ["IMDb_name"] = 150000, ["IMDb_title"] = 184000, ["IMO_Number"] = 4000, ["IMSLP"] = 8100, ["IND"] = 7600, ["INR"] = 6100, ["INRConvert"] = 5400, ["INRConvert/CurrentRate"] = 5400, ["INRConvert/USD"] = 5300, ["INRConvert/out"] = 5400, ["IOC_profile"] = 6100, ["IP"] = 2500, ["IPA"] = 136000, ["IPA-all"] = 3400, ["IPA-de"] = 7600, ["IPA-es"] = 7700, ["IPA-fr"] = 42000, ["IPA-it"] = 5700, ["IPA-nl"] = 3600, ["IPA-pl"] = 3900, ["IPA-pt"] = 3600, ["IPA-ru"] = 2600, ["IPA-sh"] = 2700, ["IPA-sl"] = 6800, ["IPA-th"] = 2900, ["IPA_audio_link"] = 19000, ["IPA_link"] = 3100, ["IPAc-cmn"] = 2600, ["IPAc-en"] = 46000, ["IPAc-pl"] = 52000, ["IPC_athlete"] = 2600, ["IPSummary"] = 77000, ["IP_summary"] = 77000, ["IPsock"] = 9300, ["IPtalk"] = 22000, ["IPuser"] = 6800, ["IPvandal"] = 11000, ["IRC"] = 6500, ["IRI"] = 2100, ["IRL"] = 5500, ["IRN"] = 3500, ["ISBN"] = 459000, ["ISBNT"] = 38000, ["ISBN_missing"] = 2200, ["ISFDB_name"] = 4000, ["ISFDB_title"] = 4500, ["ISL"] = 2100, ["ISO_15924/script-example-character"] = 2700, ["ISO_15924/wp-article"] = 2700, ["ISO_15924/wp-article/format"] = 2700, ["ISO_15924/wp-article/label"] = 2700, ["ISO_3166_code"] = 488000, ["ISO_3166_name"] = 16000, ["ISO_639_name"] = 7000, ["ISP"] = 5400, ["ISR"] = 4700, ["ISSN"] = 11000, ["ISSN_link"] = 30000, ["ISTAT"] = 8100, ["ISU_figure_skater"] = 2500, ["ITA"] = 17000, ["ITF"] = 5900, ["ITF_profile"] = 8900, ["ITIS"] = 4300, ["ITN_talk"] = 9600, ["ITN_talk/date"] = 9600, ["IUCN_banner"] = 15000, ["I_sup"] = 4500, ["Iaaf_name"] = 7400, ["Ice_hockey"] = 20000, ["Ice_hockey_stats"] = 15000, ["Icehockeystats"] = 11000, ["Icon"] = 560000, ["If"] = 261000, ["If_all"] = 5800, ["If_between"] = 3700, ["If_both"] = 9870000, ["If_empty"] = 2930000, ["If_first_display_both"] = 61000, ["If_in_page"] = 7400, ["If_last_display_both"] = 28000, ["If_preview"] = 56000, ["If_then_show"] = 251000, ["Ifempty"] = 4000, ["Ifeq"] = 13000, ["Iferror_then_show"] = 3100, ["Ifexist_not_redirect"] = 1090000, ["Ifnotempty"] = 13000, ["Ifnumber"] = 32000, ["Ifsubst"] = 91000, ["Ih"] = 7500, ["Ill"] = 106000, ["Illm"] = 7000, ["Image_frame"] = 3700, ["Image_label"] = 4700, ["Image_label_begin"] = 4000, ["Image_label_end"] = 3600, ["Image_label_small"] = 2800, ["Image_needed"] = 4600, ["Image_other"] = 282000, ["Image_requested"] = 169000, ["Image_requested/Category_helper"] = 162000, ["Imbox"] = 904000, ["Imdb_name"] = 5300, ["Imdb_title"] = 4200, ["Import_style"] = 10000, ["Import_style/inputbox.css"] = 10000, ["Importance"] = 5540000, ["Importance/colour"] = 5560000, ["Importance_mask"] = 8780000, ["Improve_categories"] = 6600, ["In_class"] = 5500, ["In_lang"] = 348000, ["In_progress"] = 3000, ["In_string"] = 67000, ["In_title"] = 18000, ["Inactive_WikiProject_banner"] = 204000, ["Inactive_userpage_blanked"] = 4800, ["Include-USGov"] = 29000, ["Incomplete_list"] = 22000, ["Inconclusive"] = 2000, ["Increase"] = 40000, ["Incumbent_pope"] = 4300, ["Indent"] = 4000, ["IndexFungorum"] = 2200, ["Indian_English"] = 4100, ["Indian_Rupee"] = 9900, ["Indian_railway_code"] = 3100, ["Inflation"] = 18000, ["Inflation-fn"] = 5300, ["Inflation-year"] = 4300, ["Inflation/IN/startyear"] = 5400, ["Inflation/UK"] = 4200, ["Inflation/UK/dataset"] = 4200, ["Inflation/UK/startyear"] = 4200, ["Inflation/US"] = 11000, ["Inflation/US/dataset"] = 11000, ["Inflation/US/startyear"] = 11000, ["Inflation/fn"] = 6000, ["Inflation/year"] = 23000, ["Info"] = 7100, ["Infobox"] = 3110000, ["Infobox/Columns"] = 2200, ["Infobox/mobileviewfix.css"] = 19000, ["Infobox3cols"] = 16000, ["Infobox_AFL_biography"] = 14000, ["Infobox_Aircraft_Begin"] = 5500, ["Infobox_Aircraft_Type"] = 4800, ["Infobox_Athletics_Championships"] = 2600, ["Infobox_Australian_place"] = 15000, ["Infobox_CFL_biography"] = 2400, ["Infobox_COA_wide"] = 3100, ["Infobox_Canada_electoral_district"] = 2400, ["Infobox_Canadian_Football_League_biography"] = 5900, ["Infobox_Canadian_Football_League_biography/position"] = 5800, ["Infobox_Chinese"] = 19000, ["Infobox_Chinese/Footer"] = 8700, ["Infobox_Chinese/Header"] = 8700, ["Infobox_Chinese/Korean"] = 15000, ["Infobox_Christian_leader"] = 17000, ["Infobox_Election"] = 2500, ["Infobox_French_commune"] = 38000, ["Infobox_GAA_player"] = 3200, ["Infobox_Gaelic_games_player"] = 4900, ["Infobox_German_location"] = 13000, ["Infobox_German_place"] = 14000, ["Infobox_Greece_place"] = 2800, ["Infobox_Greek_Dimos"] = 2800, ["Infobox_Hindu_temple"] = 2400, ["Infobox_Indian_state_legislative_assembly_constituency"] = 3600, ["Infobox_Italian_comune"] = 8100, ["Infobox_Korean_name"] = 15000, ["Infobox_Korean_name/categories"] = 15000, ["Infobox_MLB_yearly"] = 3100, ["Infobox_NCAA_team_season"] = 18000, ["Infobox_NFL_biography"] = 27000, ["Infobox_NFL_player"] = 8200, ["Infobox_NFL_season"] = 2600, ["Infobox_NFL_team_season"] = 3900, ["Infobox_NRHP"] = 72000, ["Infobox_NRHP/conv"] = 18000, ["Infobox_NRHP/locmapin2region"] = 66000, ["Infobox_Officeholder"] = 5600, ["Infobox_Olympic_event"] = 7300, ["Infobox_Olympic_event/games_text"] = 7300, ["Infobox_Paralympic_event"] = 2500, ["Infobox_Paralympic_event/games_text"] = 2500, ["Infobox_Politician"] = 2400, ["Infobox_Romanian_subdivision"] = 3100, ["Infobox_Russian_district"] = 2000, ["Infobox_Russian_inhabited_locality"] = 4400, ["Infobox_SCOTUS_case"] = 3600, ["Infobox_Site_of_Special_Scientific_Interest"] = 2000, ["Infobox_Swiss_town"] = 2800, ["Infobox_Switzerland_municipality"] = 2900, ["Infobox_Turkey_place"] = 2100, ["Infobox_U.S._county"] = 3000, ["Infobox_U.S._county/district"] = 3000, ["Infobox_UK_legislation"] = 2200, ["Infobox_UK_place"] = 25000, ["Infobox_UK_place/NoDialCode"] = 7700, ["Infobox_UK_place/NoPostCode"] = 2900, ["Infobox_UK_place/area"] = 2300, ["Infobox_UK_place/dist"] = 2500, ["Infobox_UK_place/local"] = 25000, ["Infobox_UK_place/styles.css"] = 25000, ["Infobox_UN_resolution"] = 2300, ["Infobox_US_Supreme_Court_case"] = 3800, ["Infobox_US_Supreme_Court_case/courts"] = 3800, ["Infobox_Wikipedia_user"] = 9300, ["Infobox_YouTube_personality"] = 2400, ["Infobox_academic"] = 12000, ["Infobox_aircraft_begin"] = 14000, ["Infobox_aircraft_occurrence"] = 2200, ["Infobox_aircraft_type"] = 12000, ["Infobox_airline"] = 4500, ["Infobox_airport"] = 15000, ["Infobox_airport/datatable"] = 14000, ["Infobox_album"] = 160000, ["Infobox_album/color"] = 187000, ["Infobox_album/link"] = 160000, ["Infobox_anatomy"] = 4400, ["Infobox_ancient_site"] = 5100, ["Infobox_animanga/Footer"] = 6600, ["Infobox_animanga/Header"] = 6600, ["Infobox_animanga/Print"] = 5300, ["Infobox_animanga/Video"] = 4600, ["Infobox_architect"] = 3500, ["Infobox_artist"] = 27000, ["Infobox_artist_discography"] = 5800, ["Infobox_artwork"] = 11000, ["Infobox_athlete"] = 3100, ["Infobox_automobile"] = 8300, ["Infobox_award"] = 12000, ["Infobox_badminton_player"] = 3200, ["Infobox_baseball_biography"] = 28000, ["Infobox_baseball_biography/style"] = 28000, ["Infobox_baseball_biography/styles.css"] = 28000, ["Infobox_basketball_biography"] = 20000, ["Infobox_basketball_biography/style"] = 20000, ["Infobox_basketball_club"] = 3000, ["Infobox_beauty_pageant"] = 2400, ["Infobox_bilateral_relations"] = 4300, ["Infobox_body_of_water"] = 17000, ["Infobox_book"] = 51000, ["Infobox_boxer"] = 5600, ["Infobox_bridge"] = 5900, ["Infobox_building"] = 26000, ["Infobox_character"] = 7800, ["Infobox_chess_biography"] = 3500, ["Infobox_chess_player"] = 3000, ["Infobox_church"] = 14000, ["Infobox_church/denomination"] = 14000, ["Infobox_church/font_color"] = 14000, ["Infobox_civil_conflict"] = 2200, ["Infobox_civilian_attack"] = 4900, ["Infobox_college_coach"] = 11000, ["Infobox_college_football_game"] = 2100, ["Infobox_college_sports_team_season"] = 38000, ["Infobox_college_sports_team_season/link"] = 38000, ["Infobox_college_sports_team_season/name"] = 38000, ["Infobox_college_sports_team_season/succession"] = 38000, ["Infobox_college_sports_team_season/team"] = 38000, ["Infobox_comic_book_title"] = 2900, ["Infobox_comics_character"] = 3600, ["Infobox_comics_creator"] = 3500, ["Infobox_comics_creator/styles.css"] = 3500, ["Infobox_company"] = 82000, ["Infobox_concert"] = 3200, ["Infobox_constituency"] = 5000, ["Infobox_country"] = 6200, ["Infobox_country/formernext"] = 5900, ["Infobox_country/imagetable"] = 5000, ["Infobox_country/multirow"] = 8000, ["Infobox_country/status_text"] = 2700, ["Infobox_country/styles.css"] = 6200, ["Infobox_country_at_games"] = 14000, ["Infobox_country_at_games/core"] = 14000, ["Infobox_country_at_games/see_also"] = 12000, ["Infobox_court_case"] = 4500, ["Infobox_court_case/images"] = 2300, ["Infobox_cricket_tournament"] = 2200, ["Infobox_cricketer"] = 32000, ["Infobox_cricketer/career"] = 32000, ["Infobox_cricketer/national_side"] = 7400, ["Infobox_criminal"] = 6000, ["Infobox_curler"] = 2600, ["Infobox_cycling_race_report"] = 4400, ["Infobox_cyclist"] = 16000, ["Infobox_dam"] = 5500, ["Infobox_designation_list"] = 18000, ["Infobox_designation_list/entry"] = 16000, ["Infobox_dim"] = 6700, ["Infobox_dim/core"] = 6700, ["Infobox_diocese"] = 3800, ["Infobox_drug"] = 9200, ["Infobox_drug/chemical_formula"] = 9200, ["Infobox_drug/data_page_link"] = 9200, ["Infobox_drug/formatATC"] = 9100, ["Infobox_drug/formatCASnumber"] = 9200, ["Infobox_drug/formatChEBI"] = 9200, ["Infobox_drug/formatChEMBL"] = 9200, ["Infobox_drug/formatChemDBNIAID"] = 9200, ["Infobox_drug/formatChemSpider"] = 9200, ["Infobox_drug/formatCompTox"] = 9200, ["Infobox_drug/formatDrugBank"] = 9200, ["Infobox_drug/formatIUPHARBPS"] = 9200, ["Infobox_drug/formatJmol"] = 9200, ["Infobox_drug/formatKEGG"] = 9200, ["Infobox_drug/formatPDBligand"] = 8600, ["Infobox_drug/formatPubChemCID"] = 9200, ["Infobox_drug/formatPubChemSID"] = 9200, ["Infobox_drug/formatUNII"] = 9200, ["Infobox_drug/legal_status"] = 9300, ["Infobox_drug/licence"] = 9200, ["Infobox_drug/maintenance_categories"] = 9200, ["Infobox_drug/pregnancy_category"] = 9200, ["Infobox_drug/title"] = 9200, ["Infobox_election"] = 27000, ["Infobox_election/row"] = 27000, ["Infobox_election/shortname"] = 26000, ["Infobox_enzyme"] = 5100, ["Infobox_ethnic_group"] = 7000, ["Infobox_event"] = 4900, ["Infobox_family"] = 2000, ["Infobox_figure_skater"] = 4100, ["Infobox_film"] = 152000, ["Infobox_film/short_description"] = 148000, ["Infobox_film_awards"] = 2500, ["Infobox_film_awards/link"] = 2500, ["Infobox_film_awards/style"] = 2500, ["Infobox_food"] = 6700, ["Infobox_football_biography"] = 203000, ["Infobox_football_club"] = 27000, ["Infobox_football_club_season"] = 19000, ["Infobox_football_league"] = 2500, ["Infobox_football_league_season"] = 19000, ["Infobox_football_match"] = 5600, ["Infobox_football_tournament_season"] = 7300, ["Infobox_former_subdivision"] = 3300, ["Infobox_former_subdivision/styles.css"] = 3300, ["Infobox_galaxy"] = 2000, ["Infobox_game"] = 2300, ["Infobox_game_score"] = 3400, ["Infobox_gene"] = 13000, ["Infobox_given_name"] = 4000, ["Infobox_golfer"] = 4300, ["Infobox_golfer/highest_ranking"] = 4300, ["Infobox_government_agency"] = 10000, ["Infobox_government_cabinet"] = 2400, ["Infobox_gridiron_football_person"] = 2700, ["Infobox_gridiron_football_person/position"] = 5800, ["Infobox_gymnast"] = 3300, ["Infobox_handball_biography"] = 4800, ["Infobox_historic_site"] = 11000, ["Infobox_horseraces"] = 2600, ["Infobox_hospital"] = 6200, ["Infobox_hospital/care_system"] = 6200, ["Infobox_hospital/lists"] = 6200, ["Infobox_ice_hockey_biography"] = 19000, ["Infobox_ice_hockey_player"] = 19000, ["Infobox_ice_hockey_team"] = 3000, ["Infobox_ice_hockey_team_season"] = 2000, ["Infobox_information_appliance"] = 2300, ["Infobox_international_football_competition"] = 5500, ["Infobox_islands"] = 8600, ["Infobox_islands/area"] = 9000, ["Infobox_islands/density"] = 9000, ["Infobox_islands/length"] = 8600, ["Infobox_islands/styles.css"] = 8600, ["Infobox_journal"] = 9600, ["Infobox_journal/Abbreviation_search"] = 9500, ["Infobox_journal/Bluebook_check"] = 9300, ["Infobox_journal/Former_check"] = 9300, ["Infobox_journal/ISO_4_check"] = 9300, ["Infobox_journal/ISSN-eISSN"] = 9400, ["Infobox_journal/Indexing_search"] = 9400, ["Infobox_journal/MathSciNet_check"] = 9300, ["Infobox_journal/NLM_check"] = 9300, ["Infobox_journal/frequency"] = 8500, ["Infobox_lake"] = 4500, ["Infobox_language"] = 9400, ["Infobox_language/family-color"] = 11000, ["Infobox_language/genetic"] = 6500, ["Infobox_language/linguistlist"] = 9400, ["Infobox_language/ref"] = 7000, ["Infobox_law_enforcement_agency"] = 2000, ["Infobox_legislature"] = 3500, ["Infobox_library"] = 2100, ["Infobox_lighthouse"] = 2600, ["Infobox_lighthouse/light"] = 2600, ["Infobox_locomotive"] = 4800, ["Infobox_magazine"] = 7400, ["Infobox_manner_of_address"] = 3200, ["Infobox_mapframe"] = 79000, ["Infobox_martial_artist"] = 5500, ["Infobox_martial_artist/record"] = 5500, ["Infobox_medal_templates"] = 414000, ["Infobox_medical_condition"] = 9900, ["Infobox_medical_condition_(new)"] = 8200, ["Infobox_military_conflict"] = 21000, ["Infobox_military_installation"] = 9600, ["Infobox_military_person"] = 44000, ["Infobox_military_unit"] = 25000, ["Infobox_mine"] = 2100, ["Infobox_model"] = 2300, ["Infobox_mountain"] = 27000, ["Infobox_multi-sport_competition_event"] = 2200, ["Infobox_museum"] = 10000, ["Infobox_musical_artist"] = 119000, ["Infobox_musical_artist/color"] = 119000, ["Infobox_musical_artist/hCard_class"] = 307000, ["Infobox_musical_composition"] = 2700, ["Infobox_name"] = 7300, ["Infobox_name_module"] = 11000, ["Infobox_newspaper"] = 9300, ["Infobox_nobility"] = 2400, ["Infobox_noble"] = 7000, ["Infobox_officeholder"] = 206000, ["Infobox_officeholder/office"] = 211000, ["Infobox_official_post"] = 7700, ["Infobox_organization"] = 35000, ["Infobox_pageant_titleholder"] = 2800, ["Infobox_park"] = 7100, ["Infobox_person"] = 454000, ["Infobox_person/Wikidata"] = 4800, ["Infobox_person/height"] = 100000, ["Infobox_person/length"] = 6900, ["Infobox_person/weight"] = 65000, ["Infobox_philosopher"] = 3200, ["Infobox_planet"] = 4700, ["Infobox_play"] = 3700, ["Infobox_political_party"] = 13000, ["Infobox_power_station"] = 2900, ["Infobox_prepared_food"] = 3300, ["Infobox_professional_wrestler"] = 4100, ["Infobox_professional_wrestling_event"] = 2500, ["Infobox_protected_area"] = 14000, ["Infobox_protein_family"] = 2100, ["Infobox_publisher"] = 2300, ["Infobox_racehorse"] = 5500, ["Infobox_racing_driver"] = 3500, ["Infobox_radio_station"] = 22000, ["Infobox_rail"] = 2900, ["Infobox_rail_line"] = 7100, ["Infobox_rail_line/tracking"] = 7100, ["Infobox_rail_service"] = 2900, ["Infobox_rail_service/doc"] = 2900, ["Infobox_reality_competition_season"] = 3300, ["Infobox_record_label"] = 4000, ["Infobox_recurring_event"] = 6200, ["Infobox_religious_biography"] = 4900, ["Infobox_religious_building"] = 12000, ["Infobox_religious_building/color"] = 16000, ["Infobox_restaurant"] = 2300, ["Infobox_river"] = 29000, ["Infobox_river/calcunit"] = 29000, ["Infobox_river/discharge"] = 29000, ["Infobox_river/row-style"] = 29000, ["Infobox_river/source"] = 29000, ["Infobox_road"] = 24000, ["Infobox_road/meta/mask/category"] = 24000, ["Infobox_road/meta/mask/country"] = 24000, ["Infobox_road/styles.css"] = 25000, ["Infobox_road_small"] = 2200, ["Infobox_rockunit"] = 6400, ["Infobox_royalty"] = 21000, ["Infobox_royalty/short_description"] = 13000, ["Infobox_rugby_biography"] = 15000, ["Infobox_rugby_biography/correct_date"] = 15000, ["Infobox_rugby_biography/depcheck"] = 6800, ["Infobox_rugby_league_biography"] = 9800, ["Infobox_rugby_league_biography/PLAYER"] = 9700, ["Infobox_rugby_team"] = 2600, ["Infobox_sailboat_specifications"] = 2100, ["Infobox_saint"] = 4900, ["Infobox_school"] = 38000, ["Infobox_school/short_description"] = 38000, ["Infobox_school_district"] = 5600, ["Infobox_school_district/styles.css"] = 5600, ["Infobox_scientist"] = 47000, ["Infobox_service_record"] = 2600, ["Infobox_settlement"] = 551000, ["Infobox_settlement/areadisp"] = 231000, ["Infobox_settlement/columns"] = 92000, ["Infobox_settlement/columns/styles.css"] = 92000, ["Infobox_settlement/densdisp"] = 421000, ["Infobox_settlement/impus"] = 80000, ["Infobox_settlement/lengthdisp"] = 167000, ["Infobox_settlement/link"] = 92000, ["Infobox_settlement/metric"] = 206000, ["Infobox_settlement/pref"] = 286000, ["Infobox_settlement/styles.css"] = 551000, ["Infobox_ship_begin"] = 40000, ["Infobox_ship_career"] = 37000, ["Infobox_ship_characteristics"] = 40000, ["Infobox_ship_class_overview"] = 4000, ["Infobox_ship_image"] = 40000, ["Infobox_shopping_mall"] = 3400, ["Infobox_short_story"] = 2300, ["Infobox_skier"] = 2500, ["Infobox_soap_character"] = 2900, ["Infobox_software"] = 14000, ["Infobox_software/simple"] = 14000, ["Infobox_song"] = 74000, ["Infobox_song/color"] = 74000, ["Infobox_song/link"] = 74000, ["Infobox_spaceflight"] = 3500, ["Infobox_spaceflight/styles.css"] = 3500, ["Infobox_sports_competition_event"] = 15000, ["Infobox_sports_competition_event/medalrow"] = 10000, ["Infobox_sports_league"] = 4900, ["Infobox_sports_season"] = 5100, ["Infobox_sports_team"] = 2300, ["Infobox_sportsperson"] = 105000, ["Infobox_stadium"] = 3800, ["Infobox_station"] = 54000, ["Infobox_station/doc"] = 54000, ["Infobox_station/services"] = 54000, ["Infobox_station/styles.css"] = 54000, ["Infobox_street"] = 3200, ["Infobox_swimmer"] = 9300, ["Infobox_television"] = 55000, ["Infobox_television/Short_description"] = 53000, ["Infobox_television_channel"] = 6200, ["Infobox_television_episode"] = 11000, ["Infobox_television_episode/styles.css"] = 11000, ["Infobox_television_season"] = 9100, ["Infobox_television_station"] = 3700, ["Infobox_tennis_biography"] = 9900, ["Infobox_tennis_event"] = 2300, ["Infobox_tennis_tournament_event"] = 18000, ["Infobox_tennis_tournament_year"] = 8900, ["Infobox_tennis_tournament_year/color"] = 27000, ["Infobox_tennis_tournament_year/footer"] = 27000, ["Infobox_train"] = 2200, ["Infobox_tropical_cyclone"] = 2300, ["Infobox_union"] = 2200, ["Infobox_university"] = 26000, ["Infobox_user"] = 2600, ["Infobox_venue"] = 17000, ["Infobox_video_game"] = 27000, ["Infobox_video_game/styles.css"] = 27000, ["Infobox_volleyball_biography"] = 5200, ["Infobox_weapon"] = 7200, ["Infobox_website"] = 7600, ["Infobox_writer"] = 37000, ["Information"] = 105000, ["Information/styles.css"] = 105000, ["Inprogress"] = 2200, ["Input_link"] = 32000, ["Instagram"] = 9600, ["Interlanguage_link"] = 142000, ["Interlanguage_link_multi"] = 20000, ["Internet_Archive_author"] = 18000, ["Internet_Archive_film"] = 2500, ["Intitle"] = 11000, ["Invalid_SVG"] = 3800, ["Invalid_SVG/styles.css"] = 3800, ["Ipsock"] = 7900, ["Iptalk"] = 20000, ["IranCensus2006"] = 54000, ["IranNCSGN"] = 3200, ["Iran_Census_2006"] = 54000, ["Irc"] = 2100, ["Irish_place_name"] = 2500, ["IsIPAddress"] = 38000, ["IsValidPageName"] = 133000, ["Is_country_in_Central_America"] = 13000, ["Is_country_in_the_Caribbean"] = 13000, ["Is_interwiki_link"] = 6000, ["Is_italic_taxon"] = 452000, ["Is_redirect"] = 25000, ["Isbn"] = 6600, ["Isfdb_name"] = 3900, ["Isfdb_title"] = 4500, ["Isnumeric"] = 199000, ["Iso2continent"] = 33000, ["Iso2country"] = 23000, ["Iso2country/article"] = 22000, ["Iso2country/data"] = 23000, ["Iso2nationality"] = 215000, ["Issubst"] = 71000, ["Isu_name"] = 2300, ["Italic_dab2"] = 5000, ["Italic_title"] = 294000, ["Italic_title_prefixed"] = 8600, ["Italics_colon"] = 3300, ["Italictitle"] = 4400, ["Ivm"] = 5800, ["Ivm/styles.css"] = 5800, ["Ivmbox"] = 120000, ["Ivory_messagebox"] = 134000, ["Module:I18n/complex_date"] = 64000, ["Module:IP"] = 111000, ["Module:IPA_symbol"] = 4300, ["Module:IPA_symbol/data"] = 4400, ["Module:IPAc-en"] = 46000, ["Module:IPAc-en/data"] = 46000, ["Module:IPAc-en/phonemes"] = 46000, ["Module:IPAc-en/pronunciation"] = 46000, ["Module:IPAddress"] = 168000, ["Module:ISO_3166"] = 982000, ["Module:ISO_3166/data/AT"] = 2500, ["Module:ISO_3166/data/BA"] = 3400, ["Module:ISO_3166/data/CA"] = 2700, ["Module:ISO_3166/data/CN"] = 2000, ["Module:ISO_3166/data/DE"] = 14000, ["Module:ISO_3166/data/ES"] = 3500, ["Module:ISO_3166/data/FR"] = 38000, ["Module:ISO_3166/data/GB"] = 6300, ["Module:ISO_3166/data/GR"] = 3100, ["Module:ISO_3166/data/IN"] = 28000, ["Module:ISO_3166/data/National"] = 982000, ["Module:ISO_3166/data/PL"] = 2500, ["Module:ISO_3166/data/RS"] = 3200, ["Module:ISO_3166/data/RU"] = 24000, ["Module:ISO_3166/data/TR"] = 2300, ["Module:ISO_3166/data/US"] = 83000, ["Module:ISO_639_name"] = 13000, ["Module:ISOdate"] = 64000, ["Module:Icon"] = 560000, ["Module:Icon/data"] = 560000, ["Module:If_empty"] = 2930000, ["Module:If_in_page"] = 7400, ["Module:If_preview"] = 465000, ["Module:If_preview/configuration"] = 465000, ["Module:If_preview/styles.css"] = 465000, ["Module:Import_style"] = 10000, ["Module:In_lang"] = 348000, ["Module:Indent"] = 4000, ["Module:Infobox"] = 3990000, ["Module:Infobox/dates"] = 64000, ["Module:Infobox/styles.css"] = 4240000, ["Module:Infobox3cols"] = 291000, ["Module:InfoboxImage"] = 4280000, ["Module:Infobox_body_of_water_tracking"] = 17000, ["Module:Infobox_cyclist_tracking"] = 16000, ["Module:Infobox_gene"] = 13000, ["Module:Infobox_mapframe"] = 375000, ["Module:Infobox_military_conflict"] = 21000, ["Module:Infobox_military_conflict/styles.css"] = 21000, ["Module:Infobox_multi-lingual_name"] = 19000, ["Module:Infobox_multi-lingual_name/data"] = 19000, ["Module:Infobox_power_station"] = 2900, ["Module:Infobox_road"] = 25000, ["Module:Infobox_road/browselinks"] = 25000, ["Module:Infobox_road/errors"] = 24000, ["Module:Infobox_road/length"] = 25000, ["Module:Infobox_road/locations"] = 24000, ["Module:Infobox_road/map"] = 25000, ["Module:Infobox_road/route"] = 25000, ["Module:Infobox_road/sections"] = 24000, ["Module:Infobox_television"] = 55000, ["Module:Infobox_television_disambiguation_check"] = 62000, ["Module:Infobox_television_episode"] = 11000, ["Module:Infobox_television_season_disambiguation_check"] = 8600, ["Module:Infobox_television_season_name"] = 9100, ["Module:Internet_Archive"] = 18000, ["Module:IrelandByCountyCatNav"] = 2500, ["Module:Is_infobox_in_lead"] = 372000, ["Module:Is_instance"] = 8000, ["Module:Italic_title"] = 1090000, ["Module:Italic_title2"] = 5000, } f698d6f8949cf41d32be12a685875510b85ac931 Template:Infobox/doc 10 230 460 459 2023-01-16T18:15:50Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{distinguish|Template:Userbox}} {{#ifeq:{{SUBPAGENAME}}|sandbox||{{High-use}}}} {{Lua|Module:Infobox}} {{Parameter names example |name={{PAGENAME}} <!--|child |subbox |decat--> |title |above |subheader |subheader1 |subheader2={{{subheader2}}}<br/>...... |image|caption |image1|caption1 |image2|caption2={{{caption2}}}<br/>...... |header1=<div style="border-top:1px dashed #ccc;">{{{header1}}}<br/>{{nobold|( ''or'' )}}</div> |label2={{{label1}}} |data2={{{data1}}} |data3=( ''or'' ) |data4=<div style="padding-bottom:0.25em;border-bottom:1px dashed #ccc;">{{{data1}}}</div> |header5={{{header2}}}<br/><div style="padding:0.75em 0 0.5em;">{{nobold|( ''or'' )}}</div> |label6={{{label2}}} |data6={{{data2}}} |data7=( ''or'' ) |data8=<div style="padding-bottom:0.25em;border-bottom:1px dashed #ccc;">{{{data2}}}</div> |data9=<div style="padding:0.75em 0 0.5em;">( ''etc'' )</div> |below }} This template is intended as a meta template: a template used for constructing other templates. '''Note''': In general, it is not meant for use directly in an article, but can be used on a one-off basis if required. [[Help:Infobox]] contains an introduction about the recommended content and design of infoboxes; [[Wikipedia:Manual of Style/Infoboxes]] contains additional style guidelines. See [[WP:List of infoboxes]] and [[:Category:Infobox templates]] for lists of prepared topic-specific infoboxes. == Usage == {{tlf|Infobox}} is a meta-template: used to organise an actual <nowiki>{{Infobox sometopic}}</nowiki> template (like {{tl|Infobox building}}). For <code><nowiki>[[Template:Infobox sometopic]]</nowiki></code>, template code then looks like this, simplified: <pre> {{Infobox | name = {{{name|{{PAGENAME}}}}} | image = {{{image|}}} | caption1 = {{{caption|}}} | label1 = Former names | data1 = {{{former_names|}}} | header2 = General information | label3 = Status | data3 = {{{status|}}} ... <!-- etc. --> }} </pre> == Optional control parameters == ; name : If this parameter is present, "view/talk/edit" links will be added to the bottom of the infobox pointing to the named page, prefixed by <code>Template:</code> if no namespace is specified. You may use the value <nowiki>{{subst:PAGENAME}}</nowiki>; however, this is rarely what you want because it will send users clicking these links in an infobox to the template code rather than the data in the infobox they probably want to change. ; child : See the [[#Embedding|Embedding]] section for details. If this is set to "yes", this child infobox should be titled but have no name parameter. This parameter is empty by default, set it to "yes" to activate it. ; subbox : See the [[#Subboxes|Subboxes]] section for details. If this is set to "yes", this subbox should be titled but have no name parameter. This parameter is empty by default, set to "yes" to activate it. It has no effect if the '''child''' parameter is also set to "yes". ; decat : If this is set to "yes", the current page will not be autocategorized in a maintenance category when the generated infobox has some problems or no visible data section. Leave empty by default or set to "yes" to activate it. ; autoheaders: If this is set to any non-blank value, headers which are not followed by data fields are suppressed. See the "[[#Hiding headers when all its data fields are empty|hiding headers when all its data fields are empty]]" section for more details. == Content parameters == === Title === There are two different ways to put a title on an infobox. One contains the title inside the infobox's border in the uppermost cell of the table, the other puts it as a caption on top of the table. You can use them both together, or just one or the other, or neither (though this is not recommended): ; title : Text to put in the caption over the top of the table (or as section header before the whole content of this table, if this is a child infobox). For [[Wikipedia:Manual of Style/Accessibility#Tables|accessibility reasons]], this is the most recommended alternative. ; above : Text to put within the uppermost cell of the table. ; subheader(n) : additional title fields which fit below {{{title}}} and {{{above}}}, but before images. Examples: {{Infobox | name = Infobox/doc | title = Text in caption over infobox | subheader = Subheader of the infobox | header = (the rest of the infobox goes here) }} <pre style="overflow:auto"> {{Infobox | name = {{subst:PAGENAME}} | title = Text in caption over infobox | subheader = Subheader of the infobox | header = (the rest of the infobox goes here) }} </pre>{{clear}} {{Infobox | name = Infobox/doc | above = Text in uppermost cell of infobox | subheader = Subheader of the infobox | subheader2 = Second subheader of the infobox | header = (the rest of the infobox goes here) }} <pre style="overflow:auto"> {{Infobox | name = {{subst:PAGENAME}} | above = Text in uppermost cell of infobox | subheader = Subheader of the infobox | subheader2 = Second subheader of the infobox | header = (the rest of the infobox goes here) }} </pre>{{clear}} === Illustration images === ; image(n) : images to display at the top of the template. Use full image syntax, for example <nowiki>[[File:example.png|200px|alt=Example alt text]]</nowiki>. Image is centered by default. See [[WP:ALT]] for more on alt text. ; caption(n) : Text to put underneath the images. === Main data === ; header(n) : Text to use as a header in row n. ; label(n) : Text to use as a label in row n. ; data(n) : Text to display as data in row n. Note: for any given value for (n), not all combinations of parameters are permitted. The presence of a {{para|header''(n)''}} will cause the corresponding {{para|data''(n)''}} (and {{para|rowclass''(n)''}} {{para|label''(n)''}}, see below) to be ignored; the absence of a {{para|data''(n)''}} will cause the corresponding {{para|label''(n)''}} to be ignored. Valid combinations for any single row are: * {{para|class''(n)''}} {{para|header''(n)''}} * {{para|rowclass''(n)''}} {{para|class''(n)''}} {{para|data''(n)''}} * {{para|rowclass''(n)''}} {{para|label''(n)''}} {{para|class''(n)''}} {{para|data''(n)''}} See the rendering of header4, label4, and data4 in the [[#Examples|Examples]] section below. ==== Number ranges ==== To allow flexibility when the layout of an infobox is changed, it may be helpful when developing an infobox to use non-contiguous numbers for header and label/data rows. Parameters for new rows can then be inserted in future without having to renumber existing parameters. For example: <pre style="overflow:auto"> | header3 = Section 1 | label5 = Label A | data5 = Data A | label7 = Label C | data7 = Data C | header10 = Section 2 | label12 = Label D | data12 = Data D </pre>{{clear}} It is also possible to automatically renumber parameter names by using [[User:Frietjes/infoboxgap.js]] or [[Module:IncrementParams]]. There is no upper limit on numbers but there must be at most 50 between each used number. ==== Making data fields optional ==== A row with a label but no data is not displayed. This allows for the easy creation of optional infobox content rows. To make a row optional use a parameter that defaults to an empty string, like so: <pre style="overflow:auto"> | label5 = Population | data5 = {{{population|}}} </pre>{{clear}} This way if an article doesn't define the population parameter in its infobox the row won't be displayed. For more complex fields with pre-formatted contents that would still be present even if the parameter wasn't set, you can wrap it all in an "#if" statement to make the whole thing vanish when the parameter is not used. For instance, the "#if" statement in the following example reads "#if:the parameter ''mass'' has been supplied |then display it, followed by 'kg'": <pre style="overflow:auto"> | label6 = Mass | data6 = {{ #if: {{{mass|}}} | {{{mass}}} kg }} </pre>{{clear}} For more on #if, see [[meta:ParserFunctions##if:|here]]. ==== Hiding headers when all its data fields are empty ==== You can also make headers automatically hide when their section is empty (has no data-row showing). Consider this situation: {{Infobox | title = Example: header with & without data | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = Header5 with data below | label6 = label6 text | data6 = Some value }} <pre style="overflow:auto"> {{Infobox | title = Example: header with & without data | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = Header5 with data below | label6 = label6 text | data6 = Some value }} </pre>{{clear}} If you want hide the header when no {{para|data''N''}} values are present, use '''{{para|autoheaders|y}}''': {{Infobox | title = Example: header with & without data | autoheaders = y | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = Header5 with data below | label6 = label6 text | data6 = Some value }} <syntaxhighlight lang="moin" style="overflow:auto"> {{Infobox | title = Example: header with & without data | autoheaders = y | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = Header5 with data below | label6 = label6 text | data6 = Some value }} </syntaxhighlight>{{clear}} So, header1 will be shown if any of item1, item2, or item3 is defined. If none of the three parameters are defined the header won't be shown and no empty row appears before the next visible content. Note: if the data has empty css elements, like {{para|data|2=&lt;span style="background:yellow;">&lt;/span>}}, this will be treated as non-empty (having data). If {{para|autoheaders|y}} but there are items that you ''do not'' want to trigger a header, place {{para|headerX|_BLANK_}}. This will serve as an empty header and separate it from the subsequent items. {{Infobox | title = Example: blank header with & without data | autoheaders = y | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = _BLANK_ | label6 = label6 text | data6 = Some value, but does not trigger header1 or show header5 }} <syntaxhighlight lang="moin" style="overflow:auto"> {{Infobox | title = Example: header with & without data | autoheaders = y | headerstyle = background:lightgrey | header1 = Header1 with empty section | label2 = label2 text | data2 = | label3 = label3 text | data3 = | label4 = label4 text | data4 = | header5 = _BLANK_ | label6 = label6 text | data6 = Some value, but does not trigger header1 or show header5 }} </syntaxhighlight>{{clear}} === Footer === ; below : Text to put in the bottom cell. The bottom cell is intended for footnotes, see-also, and other such information. == Presentation parameters == === Italic titles === Titles of articles with infoboxes may be made italic, in line with [[WP:ITALICTITLE]], by passing the <code>italic title</code> parameter. * Turn on italic titles by passing {{para|italic title|<nowiki>{{{italic title|}}}</nowiki>}} from the infobox. * Turn off by default (notably because only Latin script may be safely rendered in this style and italic may be needed to distinguish foreign language from local English language only in that script, but would be difficult to read for other scripts) but allow some instances to be made italic by passing {{para|italic title|<nowiki>{{{italic title|no}}}</nowiki>}} * Do not make any titles italic by not passing the parameter at all. === CSS styling === {{div col}} ; bodystyle : Applies to the infobox table as a whole ; titlestyle : Applies only to the title caption. Adding a background color is usually inadvisable since the text is rendered "outside" the infobox. ; abovestyle : Applies only to the "above" cell at the top. The default style has font-size:125%; since this cell is usually used for a title, if you want to use the above cell for regular-sized text include "font-size:100%;" in the abovestyle. ; imagestyle : Applies to the cell the image is in. This includes the text of the image caption, but you should set text properties with captionstyle instead of imagestyle in case the caption is moved out of this cell in the future. ; captionstyle : Applies to the text of the image caption. ; rowstyle(n) : This parameter is inserted into the <code>style</code> attribute for the specified row. ; headerstyle : Applies to all header cells ; subheaderstyle : Applies to all subheader cells ; labelstyle : Applies to all label cells ; datastyle : Applies to all data cells ; belowstyle : Applies only to the below cell {{div col end}} === HTML classes and microformats === {{div col}} ; bodyclass : This parameter is inserted into the <code>class</code> attribute for the infobox as a whole. ; titleclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''title''' caption. <!-- currently not implemented in Lua module ; aboverowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''above''' cell is on. --> ; aboveclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''above''' cell. ; subheaderrowclass(n) : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''subheader''' is on. ; subheaderclass(n) : This parameter is inserted into the <code>class</code> attribute for the infobox's '''subheader'''. ; imagerowclass(n) : These parameters are inserted into the <code>class</code> attribute for the complete table row their respective '''image''' is on. ; imageclass : This parameter is inserted into the <code>class</code> attribute for the '''image'''. ; rowclass(n) : This parameter is inserted into the <code>class</code> attribute for the specified row including the '''label''' and '''data''' cells. ; class(n) : This parameter is inserted into the <code>class</code> attribute for the '''data''' cell of the specified row. If there's no '''data''' cell it has no effect. <!-- currently not implemented in Lua module ; belowrowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''below''' cell is on. --> ; belowclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''below''' cell. {{div col end}} This template supports the addition of microformat information. This is done by adding "class" attributes to various data cells, indicating what kind of information is contained within. Multiple class names may be specified, separated by spaces, some of them being used as selectors for custom styling according to a project policy or to the skin selected in user preferences, others being used for microformats. To flag an infobox as containing [[hCard]] information, for example, add the following parameter: <pre style="overflow:auto"> | bodyclass = vcard </pre>{{clear}} And for each row containing a data cell that's part of the vcard, add a corresponding class parameter: <pre style="overflow:auto"> | class1 = fn | class2 = org | class3 = tel </pre>{{clear}} ...and so forth. "above" and "title" can also be given classes, since these are usually used to display the name of the subject of the infobox. See [[Wikipedia:WikiProject Microformats]] for more information on adding microformat information to Wikipedia, and [[microformat]] for more information on microformats in general. == Examples == Notice how the row doesn't appear in the displayed infobox when a '''label''' is defined without an accompanying '''data''' cell, and how all of them are displayed when a '''header''' is defined on the same row as a '''data''' cell. Also notice that '''subheaders''' are not bold by default like the '''headers''' used to split the main data section, because this role is meant to be for the '''above''' cell : {{Infobox |name = Infobox/doc |bodystyle = |titlestyle = |abovestyle = background:#cfc; |subheaderstyle = |title = Test Infobox |above = Above text |subheader = Subheader above image |subheader2 = Second subheader |imagestyle = |captionstyle = |image = [[File:Example-serious.jpg|200px|alt=Example alt text]] |caption = Caption displayed below File:Example-serious.jpg |headerstyle = background:#ccf; |labelstyle = background:#ddf; |datastyle = |header1 = Header defined alone | label1 = | data1 = |header2 = | label2 = Label defined alone does not display (needs data, or is suppressed) | data2 = |header3 = | label3 = | data3 = Data defined alone |header4 = All three defined (header, label, data, all with same number) | label4 = does not display (same number as a header) | data4 = does not display (same number as a header) |header5 = | label5 = Label and data defined (label) | data5 = Label and data defined (data) |belowstyle = background:#ddf; |below = Below text }} <syntaxhighlight lang="Sass" style="overflow:auto" highlight="15"> {{Infobox |name = {{subst:PAGENAME}} |bodystyle = |titlestyle = |abovestyle = background:#cfc; |subheaderstyle = |title = Test Infobox |above = Above text |subheader = Subheader above image |subheader2 = Second subheader |imagestyle = |captionstyle = | image = [[File:Example-serious.jpg|200px|alt=Example alt text]] |caption = Caption displayed below Example-serious.jpg |headerstyle = background:#ccf; |labelstyle = background:#ddf; |datastyle = |header1 = Header defined alone | label1 = | data1 = |header2 = | label2 = Label defined alone does not display (needs data, or is suppressed) | data2 = |header3 = | label3 = | data3 = Data defined alone |header4 = All three defined (header, label, data, all with same number) | label4 = does not display (same number as a header) | data4 = does not display (same number as a header) |header5 = | label5 = Label and data defined (label) | data5 = Label and data defined (data) |belowstyle = background:#ddf; |below = Below text }} </syntaxhighlight>{{clear}} For this example, the {{para|bodystyle}} and {{para|labelstyle}} parameters are used to adjust the infobox width and define a default width for the column of labels: {{Infobox |name = Infobox/doc |bodystyle = width:20em |titlestyle = |title = Test Infobox |headerstyle = |labelstyle = width:33% |datastyle = |header1 = | label1 = Label 1 | data1 = Data 1 |header2 = | label2 = Label 2 | data2 = Data 2 |header3 = | label3 = Label 3 | data3 = Data 3 |header4 = Header 4 | label4 = | data4 = |header5 = | label5 = Label 5 | data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. |belowstyle = |below = Below text }} <syntaxhighlight lang="sass" highlight="3,9" style="overflow: auto"> {{Infobox |name = {{subst:PAGENAME}} |bodystyle = width:20em |titlestyle = |title = Test Infobox |headerstyle = |labelstyle = width:33% |datastyle = |header1 = | label1 = Label 1 | data1 = Data 1 |header2 = | label2 = Label 2 | data2 = Data 2 |header3 = | label3 = Label 3 | data3 = Data 3 |header4 = Header 4 | label4 = | data4 = |header5 = | label5 = Label 5 | data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. |belowstyle = |below = Below text }} </syntaxhighlight>{{clear}} == Embedding == <!--Linked from [[Template:Subinfobox bodystyle/doc]]--> One infobox template can be embedded into another using the {{para|child}} parameter. This feature can be used to create a modular infobox, or to create better-defined logical sections. Long ago, it was necessary to use embedding in order to create infoboxes with more than 99 rows; but nowadays there's no limit to the number of rows that can be defined in a single instance of <code><nowiki>{{infobox}}</nowiki></code>. {{Infobox | title = Top level title | data1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | data2 = {{Infobox | decat = yes | child = yes |title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} <pre style="overflow:auto"> {{Infobox | title = Top level title | data1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | data2 = {{Infobox | decat = yes | child = yes |title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} </pre>{{clear}} Note, in the examples above, the child infobox is placed in a <code>data</code> field, not a <code>header</code> field. Notice that the section subheadings are not in bold font if bolding is not explicitly specified. To obtain bold section headings, place the child infobox in a '''header''' field (but not in a '''label''' field because it would not be displayed!), either using {{Infobox | title = Top level title | header1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | header2 = {{Infobox | decat = yes | child = yes | title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} <pre style="overflow:auto"> {{Infobox | title = Top level title | header1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | header2 = {{Infobox | decat = yes | child = yes | title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} </pre>{{clear}} or, {{Infobox | title = Top level title | header1 = First subsection {{Infobox | decat = yes | child = yes | label1 = Label 1.1 | data1 = Data 1.1 }} | header2 = Second subsection {{Infobox | decat = yes | child = yes | label1 = Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} <pre style="overflow:auto"> {{Infobox | title = Top level title | header1 = First subsection {{Infobox | decat = yes | child = yes | label1 = Label 1.1 | data1 = Data 1.1 }} | header2 = Second subsection {{Infobox | decat = yes | child = yes | label1 = Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} </pre>{{clear}} Note that omitting the {{para|title}} parameter, and not including any text preceding the embedded infobox, may result in spurious blank table rows, creating gaps in the visual presentation. The garbage output can be suppressed using {{para|rowstyleN|display: none}}, replacing N with the data/header number. [[Wikipedia:WikiProject Infoboxes/embed]] includes some links to Wikipedia articles which include infoboxes embedded within other infoboxes. == Subboxes == An alternative method for embedding is to use {{para|subbox|yes}}, which removes the outer border from the infobox, but preserves the interior structure. One feature of this approach is that the parent and child boxes need not have the same structure, and the label and data fields are not aligned between the parent and child boxes because they are not in the same parent table. {{Infobox | headerstyle = background-color:#eee; | labelstyle = background-color:#eee; | header1 = Main 1 | header2 = Main 2 | data3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | data4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | label5 = Label 5 | data5 = Data 5 | header6 = Main 6 }} <syntaxhighlight lang="sass" style="overflow:auto"> {{Infobox | headerstyle = background-color:#eee; | labelstyle = background-color:#eee; | header1 = Main 1 | header2 = Main 2 | data3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | data4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | label5 = Label 5 | data5 = Data 5 | header6 = Main 6 }} </syntaxhighlight>{{clear}} Similar embedding techniques may be used within content parameters of some other templates generating tables (such as [[:Template:Sidebar|Sidebar]]) : {{Sidebar | navbar = off | headingstyle = background-color:#eee; | heading1 = Heading 1 | heading2 = Heading 2 | content3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | content4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | heading5 = Heading 5 }} <syntaxhighlight lang="sass" style="overflow:auto"> {{Sidebar | navbar = off | headingstyle = background-color:#eee; | heading1 = Heading 1 | heading2 = Heading 2 | content3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | content4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | heading5 = Heading 5 }} </syntaxhighlight>{{clear}} Note that the default padding of the parent data cell containing each subbox is still visible, so the subboxes are slightly narrower than the parent box and there's a higher vertical spacing between standard cells of the parent box than between cells of distinct subboxes. == Controlling line-breaking in embedded bulletless lists == Template {{tlx|nbsp}} may be used with {{tlx|wbr}} and {{tlx|nowrap}} to control line-breaking in bulletless lists embedded in infoboxes (e.g. cast list in {{tlx|Infobox film}}), to prevent wrapped long entries from being confused with multiple entries. See [[Template:Wbr/doc#Controlling line-breaking in infoboxes]] for details. == Full blank syntax == (Note: there is no limit to the number of possible rows; only 20 are given below since infoboxes larger than that will be relatively rare. Just extend the numbering as needed. The microformat "class" parameters are also omitted as they are not commonly used.) <pre style="overflow:auto"> {{Infobox | name = {{subst:PAGENAME}} | child = {{{child|}}} | subbox = {{{subbox|}}} | italic title = {{{italic title|no}}} | templatestyles = | child templatestyles = | grandchild templatestyles = | bodystyle = | titlestyle = | abovestyle = | subheaderstyle = | title = | above = | subheader = | imagestyle = | captionstyle = | image = | caption = | image2 = | caption2 = | headerstyle = | labelstyle = | datastyle = | header1 = | label1 = | data1 = | header2 = | label2 = | data2 = | header3 = | label3 = | data3 = | header4 = | label4 = | data4 = | header5 = | label5 = | data5 = | header6 = | label6 = | data6 = | header7 = | label7 = | data7 = | header8 = | label8 = | data8 = | header9 = | label9 = | data9 = | header10 = | label10 = | data10 = | header11 = | label11 = | data11 = | header12 = | label12 = | data12 = | header13 = | label13 = | data13 = | header14 = | label14 = | data14 = | header15 = | label15 = | data15 = | header16 = | label16 = | data16 = | header17 = | label17 = | data17 = | header18 = | label18 = | data18 = | header19 = | label19 = | data19 = | header20 = | label20 = | data20 = | belowstyle = | below = }} </pre>{{clear}} {{Help:Infobox/user style}} == Porting to other MediaWikis == The infobox template requires the [[:mw:Extension:Scribunto|Scribunto]] extension. [[Wikipedia:WikiProject Transwiki|WikiProject Transwiki]] has a version of this template that has been modified to work on other MediaWikis. == TemplateData == {{TemplateData header}} <templatedata> { "description": "This template is intended as a meta template, a template used for constructing other templates. In general, it is not meant for use directly in an article but can be used on a one-off basis if required.", "format": "{{_\n| ________________ = _\n}}\n", "params": { "title": { "label": "Title", "description": "Title displayed above the infobox", "type": "string", "suggested": true }, "image": { "label": "Image", "description": "Image illustrating the topic. Use full image syntax.", "type": "content", "suggested": true, "example": "[[File:example.png|200px|alt=Example alt text]]" }, "caption": { "label": "Caption", "description": "caption for the image", "type": "content", "suggested": true } }, "paramOrder": [ "title", "image", "caption" ] } </templatedata> ==Tracking categories== * {{Category link with count|Articles with missing Wikidata information}} * {{Category link with count|Articles using infobox templates with no data rows}} * {{Category link with count|Pages using embedded infobox templates with the title parameter}} ==See also== * [[Module:Infobox]], the [[WP:LUA|Lua]] module on which this template is based * [[Module:Check for unknown parameters]] * {{tl|Infobox3cols}} * {{tl|Navbox}} and {{tl|Sidebar}} * [[Wikipedia:List of infoboxes|List of infoboxes]] * [[:Module:InfoboxImage]] <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Infobox templates| ]] [[Category:Wikipedia metatemplates|Infobox]] [[Category:Templates generating microformats]] [[Category:Templates that add a tracking category]] [[Category:Templates based on the Infobox Lua module]] }}</includeonly> 4d4021dda2765ddd1cf8ba09b9fff12760e924a9 Help:Infobox/user style 12 231 462 461 2023-01-16T18:15:51Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki {{{heading| ==Infoboxes and user style == }}} Users can have [[WP:User style|user CSS]] that hides<!--, moves, or makes collapsible--> any infoboxes in their own browsers. To hide all infoboxes, add the following to [[Special:MyPage/common.css]] (for all [[WP:Skin|skins]], or [[Special:MyPage/skin.css]] for just the current skin), on a line by itself: <syntaxhighlight lang="css">div.mw-parser-output .infobox { display: none; }</syntaxhighlight> Alternatively, you can add the following code to [[Special:MyPage/common.js|your common.js]] or into a browser user script that is executed by an extension like [[Greasemonkey]]: <syntaxhighlight lang="js">$('.infobox').hide();</syntaxhighlight> Be aware that although{{#if:{{{guideline|}}}||, per [[WP:Manual of Style/Infoboxes]],}} all information in an infobox ideally should also be found in the main body of an article, there isn't perfect compliance with this guideline. For example, the full taxonomic hierarchy in {{tlx|Taxobox}}, and the OMIM and other medical database codes of {{tlx|Infobox disease}} are often not found in the main article content. The infobox is also often the location of the most significant, even only, image in an article.<!-- Needs Special:Mypage/common.js options for: * Making infoboxes collapsible ** Making them auto-collapsed * Moving infoboxes to bottom of page --><noinclude> {{Documentation|content= This documentation snippet is transcluded at [[Help:Infobox]], [[Template:Infobox/doc]], [[WP:Customisation#Hiding specific messages]], [[Help:User style]], [[WP:Manual of Style/Infoboxes]], and other places where this information is relevant. As a template, this snippet takes a {{para|heading}} parameter to replace the level-2 <code>==Infoboxes and user style==</code> section heading code, as needed. E.g., for a <code>=== ... ===</code> level-3 heading: <code><nowiki>heading={{=}}{{=}}{{=}}Infoboxes and user style{{=}}{{=}}{{=}}</nowiki></code> }} </noinclude> 6da0d499b1fda33a6ba13b40e6605692fc3bb489 Module:Message box/ombox.css 828 232 464 463 2023-01-16T18:15:51Z BEELETH 2 1 revision imported: Import from Wikipedia text text/plain /* {{pp|small=y}} */ .ombox { margin: 4px 0; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } /* For the "small=yes" option. */ .ombox.mbox-small { font-size: 88%; line-height: 1.25em; } .ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .ombox-delete { border: 2px solid #b32424; /* Red */ } .ombox-content { border: 1px solid #f28500; /* Orange */ } .ombox-style { border: 1px solid #fc3; /* Yellow */ } .ombox-move { border: 1px solid #9932cc; /* Purple */ } .ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } .ombox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.9em; width: 100%; } .ombox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.9em; text-align: center; } .ombox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.9em 2px 0; text-align: center; } /* An empty narrow cell */ .ombox .mbox-empty-cell { border: none; padding: 0; width: 1px; } .ombox .mbox-invalid-type { text-align: center; } @media (min-width: 720px) { .ombox { margin: 4px 10%; } .ombox.mbox-small { /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; width: 238px; } } 8fe3df4bb607e699eab2dbd23bd4a1a446391002 Template:Hlist/styles.css 10 233 466 465 2023-01-16T18:15:51Z BEELETH 2 1 revision imported: Import from Wikipedia text text/plain /* {{pp-protected|reason=match parent|small=yes}} */ /* * hlist styles are defined in core and Minerva and differ in Minerva. The * current definitions here (2023-01-01) are sufficient to override Minerva * without use of the hlist-separated class. The most problematic styles were * related to margin, padding, and the bullet. Check files listed at * [[MediaWiki talk:Common.css/to do#hlist-separated]] */ /* * TODO: When the majority of readership supports it (or some beautiful world * in which grade C support is above the minimum threshold), use :is() */ .hlist dl, .hlist ol, .hlist ul { margin: 0; padding: 0; } /* Display list items inline */ .hlist dd, .hlist dt, .hlist li { /* * don't trust the note that says margin doesn't work with inline * removing margin: 0 makes dds have margins again * We also want to reset margin-right in Minerva */ margin: 0; display: inline; } /* Display requested top-level lists inline */ .hlist.inline, .hlist.inline dl, .hlist.inline ol, .hlist.inline ul, /* Display nested lists inline */ .hlist dl dl, .hlist dl ol, .hlist dl ul, .hlist ol dl, .hlist ol ol, .hlist ol ul, .hlist ul dl, .hlist ul ol, .hlist ul ul { display: inline; } /* Hide empty list items */ .hlist .mw-empty-li { display: none; } /* TODO: :not() can maybe be used here to remove the later rule. naive test * seems to work. more testing needed. like so: *.hlist dt:not(:last-child)::after { * content: ": "; *} *.hlist dd:not(:last-child)::after, *.hlist li:not(:last-child)::after { * content: " · "; * font-weight: bold; *} */ /* Generate interpuncts */ .hlist dt::after { content: ": "; } .hlist dd::after, .hlist li::after { content: " · "; font-weight: bold; } .hlist dd:last-child::after, .hlist dt:last-child::after, .hlist li:last-child::after { content: none; } /* Add parentheses around nested lists */ .hlist dd dd:first-child::before, .hlist dd dt:first-child::before, .hlist dd li:first-child::before, .hlist dt dd:first-child::before, .hlist dt dt:first-child::before, .hlist dt li:first-child::before, .hlist li dd:first-child::before, .hlist li dt:first-child::before, .hlist li li:first-child::before { content: " ("; font-weight: normal; } .hlist dd dd:last-child::after, .hlist dd dt:last-child::after, .hlist dd li:last-child::after, .hlist dt dd:last-child::after, .hlist dt dt:last-child::after, .hlist dt li:last-child::after, .hlist li dd:last-child::after, .hlist li dt:last-child::after, .hlist li li:last-child::after { content: ")"; font-weight: normal; } /* Put ordinals in front of ordered list items */ .hlist ol { counter-reset: listitem; } .hlist ol > li { counter-increment: listitem; } .hlist ol > li::before { content: " " counter(listitem) "\a0"; } .hlist dd ol > li:first-child::before, .hlist dt ol > li:first-child::before, .hlist li ol > li:first-child::before { content: " (" counter(listitem) "\a0"; } 8c9dd9c9c00f30eead17fe10f51d183333e81f33 Template:Ombox 10 234 468 467 2023-01-16T18:15:52Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki {{#invoke:Message box|ombox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 0e54065432d540737b9e56c4e3a8e7f74d4534ea Module:TNT 828 235 470 469 2023-01-16T18:15:52Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain -- -- INTRO: (!!! DO NOT RENAME THIS PAGE !!!) -- This module allows any template or module to be copy/pasted between -- wikis without any translation changes. All translation text is stored -- in the global Data:*.tab pages on Commons, and used everywhere. -- -- SEE: https://www.mediawiki.org/wiki/Multilingual_Templates_and_Modules -- -- ATTENTION: -- Please do NOT rename this module - it has to be identical on all wikis. -- This code is maintained at https://www.mediawiki.org/wiki/Module:TNT -- Please do not modify it anywhere else, as it may get copied and override your changes. -- Suggestions can be made at https://www.mediawiki.org/wiki/Module_talk:TNT -- -- DESCRIPTION: -- The "msg" function uses a Commons dataset to translate a message -- with a given key (e.g. source-table), plus optional arguments -- to the wiki markup in the current content language. -- Use lang=xx to set language. Example: -- -- {{#invoke:TNT | msg -- | I18n/Template:Graphs.tab <!-- https://commons.wikimedia.org/wiki/Data:I18n/Template:Graphs.tab --> -- | source-table <!-- uses a translation message with id = "source-table" --> -- | param1 }} <!-- optional parameter --> -- -- -- The "doc" function will generate the <templatedata> parameter documentation for templates. -- This way all template parameters can be stored and localized in a single Commons dataset. -- NOTE: "doc" assumes that all documentation is located in Data:Templatedata/* on Commons. -- -- {{#invoke:TNT | doc | Graph:Lines }} -- uses https://commons.wikimedia.org/wiki/Data:Templatedata/Graph:Lines.tab -- if the current page is Template:Graph:Lines/doc -- local p = {} local i18nDataset = 'I18n/Module:TNT.tab' -- Forward declaration of the local functions local sanitizeDataset, loadData, link, formatMessage function p.msg(frame) local dataset, id local params = {} local lang = nil for k, v in pairs(frame.args) do if k == 1 then dataset = mw.text.trim(v) elseif k == 2 then id = mw.text.trim(v) elseif type(k) == 'number' then table.insert(params, mw.text.trim(v)) elseif k == 'lang' and v ~= '_' then lang = mw.text.trim(v) end end return formatMessage(dataset, id, params, lang) end -- Identical to p.msg() above, but used from other lua modules -- Parameters: name of dataset, message key, optional arguments -- Example with 2 params: format('I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset') function p.format(dataset, key, ...) local checkType = require('libraryUtil').checkType checkType('format', 1, dataset, 'string') checkType('format', 2, key, 'string') return formatMessage(dataset, key, {...}) end -- Identical to p.msg() above, but used from other lua modules with the language param -- Parameters: language code, name of dataset, message key, optional arguments -- Example with 2 params: formatInLanguage('es', I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset') function p.formatInLanguage(lang, dataset, key, ...) local checkType = require('libraryUtil').checkType checkType('formatInLanguage', 1, lang, 'string') checkType('formatInLanguage', 2, dataset, 'string') checkType('formatInLanguage', 3, key, 'string') return formatMessage(dataset, key, {...}, lang) end -- Obsolete function that adds a 'c:' prefix to the first param. -- "Sandbox/Sample.tab" -> 'c:Data:Sandbox/Sample.tab' function p.link(frame) return link(frame.args[1]) end function p.doc(frame) local dataset = 'Templatedata/' .. sanitizeDataset(frame.args[1]) return frame:extensionTag('templatedata', p.getTemplateData(dataset)) .. formatMessage(i18nDataset, 'edit_doc', {link(dataset)}) end function p.getTemplateData(dataset) -- TODO: add '_' parameter once lua starts reindexing properly for "all" languages local data = loadData(dataset) local names = {} for _, field in pairs(data.schema.fields) do table.insert(names, field.name) end local params = {} local paramOrder = {} for _, row in pairs(data.data) do local newVal = {} local name = nil for pos, val in pairs(row) do local columnName = names[pos] if columnName == 'name' then name = val else newVal[columnName] = val end end if name then params[name] = newVal table.insert(paramOrder, name) end end -- Work around json encoding treating {"1":{...}} as an [{...}] params['zzz123']='' local json = mw.text.jsonEncode({ params=params, paramOrder=paramOrder, description=data.description }) json = string.gsub(json,'"zzz123":"",?', "") return json end -- Local functions sanitizeDataset = function(dataset) if not dataset then return nil end dataset = mw.text.trim(dataset) if dataset == '' then return nil elseif string.sub(dataset,-4) ~= '.tab' then return dataset .. '.tab' else return dataset end end loadData = function(dataset, lang) dataset = sanitizeDataset(dataset) if not dataset then error(formatMessage(i18nDataset, 'error_no_dataset', {})) end -- Give helpful error to thirdparties who try and copy this module. if not mw.ext or not mw.ext.data or not mw.ext.data.get then error('Missing JsonConfig extension; Cannot load https://commons.wikimedia.org/wiki/Data:' .. dataset) end local data = mw.ext.data.get(dataset, lang) if data == false then if dataset == i18nDataset then -- Prevent cyclical calls error('Missing Commons dataset ' .. i18nDataset) else error(formatMessage(i18nDataset, 'error_bad_dataset', {link(dataset)})) end end return data end -- Given a dataset name, convert it to a title with the 'commons:data:' prefix link = function(dataset) return 'c:Data:' .. mw.text.trim(dataset or '') end formatMessage = function(dataset, key, params, lang) for _, row in pairs(loadData(dataset, lang).data) do local id, msg = unpack(row) if id == key then local result = mw.message.newRawMessage(msg, unpack(params or {})) return result:plain() end end if dataset == i18nDataset then -- Prevent cyclical calls error('Invalid message key "' .. key .. '"') else error(formatMessage(i18nDataset, 'error_bad_msgkey', {key, link(dataset)})) end end return p 9d0d10e54abd232c806dcabccaf03e52858634a1 Template:Clc 10 236 472 471 2023-01-16T18:15:53Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki #REDIRECT [[Template:Category link with count]] 02280e2ab57b544236e11f913e3759c5781ca9d5 Template:Module other 10 237 474 473 2023-01-16T18:15:53Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:Module}} | module | other }} }} | module = {{{1|}}} | other | #default = {{{2|}}} }}<!--End switch--><noinclude> {{documentation}} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 503694836c1b07142e63fd35d8be69ec8bb9ffe7 Template:Module rating 10 238 476 475 2023-01-16T18:15:54Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki <includeonly>{{#ifeq:{{SUBPAGENAME}}|doc|<!--do not show protection level of the module on the doc page, use the second and optionally third parameter if the doc page is also protected -->{{#if:{{{2|}}}|{{Pp|{{{2}}}|action={{{3|}}}}}}}|{{Module other|{{ombox | type = notice | image = {{#switch: {{{1|}}} | pre-alpha | prealpha | pa = [[File:Ambox warning blue construction.svg|40x40px|link=|alt=Pre-alpha]] | alpha | a = [[File:Alpha lowercase.svg|26x26px|link=|alt=Alpha]] | beta | b = [[File:Greek lc beta.svg|40x40px|link=|alt=Beta]] | release | r | general | g = [[File:Green check.svg|40x40px|link=|alt=Ready for use]] | protected | protect | p = [[File:{{#switch:{{#invoke:Effective protection level|edit|{{#switch:{{SUBPAGENAME}}|doc|sandbox={{FULLBASEPAGENAME}}|{{FULLPAGENAME}}}}}}|autoconfirmed=Semi|extendedconfirmed=Extended|accountcreator|templateeditor=Template|#default=Full}}-protection-shackle.svg|40x40px|link=|alt=Protected]] | semiprotected | semiprotect | semi =[[File:Semi-protection-shackle.svg|40x40px|link=|alt=Semi-protected]] }} | style = | textstyle = | text = {{#switch: {{{1|}}} | pre-alpha | prealpha | pa = This module is rated as [[:Category:Modules in pre-alpha development|pre-alpha]]. It is unfinished, and may or may not be in active development. It should not be used from article namespace pages. Modules remain pre-alpha until the original editor (or someone who takes one over if it is abandoned for some time) is satisfied with the basic structure.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in pre-alpha development|{{PAGENAME}}]] }} }} | alpha | a = This module is rated as [[:Category:Modules in alpha|alpha]]. It is ready for third-party input, and may be used on a few pages to see if problems arise, but should be watched. Suggestions for new features or changes in their input and output mechanisms are welcome.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in alpha|{{PAGENAME}}]] }} }} | beta | b = This module is rated as [[:Category:Modules in beta|beta]], and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in beta|{{PAGENAME}}]] }} }} | release | r | general | g = This module is rated as [[:Category:Modules for general use|ready for general use]]. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by [[Wikipedia:Template sandbox and test cases|sandbox testing]] rather than repeated trial-and-error editing.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules for general use|{{PAGENAME}}]] }} }} | protected | protect | p = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[Wikipedia:Protection policy|protected]] from editing.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }} }} | semiprotected | semiprotect | semi = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[WP:SEMI|semi-protected]] from editing.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }} }} | #default = {{error|Module rating is invalid or not specified.}} }} }}|{{error|Error: {{tl|Module rating}} must be placed in the Module namespace.}} [[Category:Pages with templates in the wrong namespace]]|demospace={{{demospace|<noinclude>module</noinclude>}}}}}}}</includeonly><noinclude> {{module rating|release|nocat=true|demospace=module}} {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go in Wikidata. --> </noinclude> bbd244b3ea2e13ec4c1c810ae44f2f3789a93efc Template:Uses TemplateStyles 10 239 478 477 2023-01-16T18:15:54Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki <includeonly>{{#invoke:Uses TemplateStyles|main}}</includeonly><noinclude> {{Uses TemplateStyles|Template:Uses TemplateStyles/example.css|nocat=true}} {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 7e26d8f257e302bd8a3dcbe53f52741ae0884f74 Module:Uses TemplateStyles 828 240 480 479 2023-01-16T18:15:55Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local TNT = require('Module:TNT') local p = {} local function format(msg, ...) return TNT.format('I18n/Uses TemplateStyles', msg, ...) end local function getConfig() return mw.loadData('Module:Uses TemplateStyles/config') end local function renderBox(tStyles) local boxArgs = { type = 'notice', small = true, image = string.format('[[File:Farm-Fresh css add.svg|32px|alt=%s]]', format('logo-alt')) } if #tStyles < 1 then boxArgs.text = string.format('<strong class="error">%s</strong>', format('error-emptylist')) else local cfg = getConfig() local tStylesLinks = {} for i, ts in ipairs(tStyles) do local link = string.format('[[:%s]]', ts) local sandboxLink = nil local tsTitle = mw.title.new(ts) if tsTitle and cfg['sandbox_title'] then local tsSandboxTitle = mw.title.new(string.format( '%s:%s/%s/%s', tsTitle.nsText, tsTitle.baseText, cfg['sandbox_title'], tsTitle.subpageText)) if tsSandboxTitle and tsSandboxTitle.exists then sandboxLink = format('sandboxlink', link, ':' .. tsSandboxTitle.prefixedText) end end tStylesLinks[i] = sandboxLink or link end local tStylesList = mList.makeList('bulleted', tStylesLinks) boxArgs.text = format( mw.title.getCurrentTitle():inNamespaces(828,829) and 'header-module' or 'header-template') .. '\n' .. tStylesList end return mMessageBox.main('mbox', boxArgs) end local function renderTrackingCategories(args, tStyles, titleObj) if yesno(args.nocat) then return '' end local cfg = getConfig() local cats = {} -- Error category if #tStyles < 1 and cfg['error_category'] then cats[#cats + 1] = cfg['error_category'] end -- TemplateStyles category titleObj = titleObj or mw.title.getCurrentTitle() if (titleObj.namespace == 10 or titleObj.namespace == 828) and not cfg['subpage_blacklist'][titleObj.subpageText] then local category = args.category or cfg['default_category'] if category then cats[#cats + 1] = category end if not yesno(args.noprotcat) and (cfg['protection_conflict_category'] or cfg['padlock_pattern']) then local currentProt = titleObj.protectionLevels["edit"] and titleObj.protectionLevels["edit"][1] or nil local addedLevelCat = false local addedPadlockCat = false for i, ts in ipairs(tStyles) do local tsTitleObj = mw.title.new(ts) local tsProt = tsTitleObj.protectionLevels["edit"] and tsTitleObj.protectionLevels["edit"][1] or nil if cfg['padlock_pattern'] and tsProt and not addedPadlockCat then local content = tsTitleObj:getContent() if not content:find(cfg['padlock_pattern']) then cats[#cats + 1] = cfg['missing_padlock_category'] addedPadlockCat = true end end if cfg['protection_conflict_category'] and currentProt and tsProt ~= currentProt and not addedLevelCat then currentProt = cfg['protection_hierarchy'][currentProt] or 0 tsProt = cfg['protection_hierarchy'][tsProt] or 0 if tsProt < currentProt then addedLevelCat = true cats[#cats + 1] = cfg['protection_conflict_category'] end end end end end for i, cat in ipairs(cats) do cats[i] = string.format('[[Category:%s]]', cat) end return table.concat(cats) end function p._main(args, cfg) local tStyles = mTableTools.compressSparseArray(args) local box = renderBox(tStyles) local trackingCategories = renderTrackingCategories(args, tStyles) return box .. trackingCategories end function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end return p 71ca57c37849f38e3c5ee30061bdae730963e48e Module:Uses TemplateStyles/config 828 241 482 481 2023-01-16T18:15:55Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain local cfg = {} -- Don’t touch this line. -- Subpage blacklist: these subpages will not be categorized (except for the -- error category, which is always added if there is an error). -- For example “Template:Foo/doc” matches the `doc = true` rule, so it will have -- no categories. “Template:Foo” and “Template:Foo/documentation” match no rules, -- so they *will* have categories. All rules should be in the -- ['<subpage name>'] = true, -- format. cfg['subpage_blacklist'] = { ['doc'] = true, ['sandbox'] = true, ['sandbox2'] = true, ['testcases'] = true, } -- Sandbox title: if the stylesheet’s title is <template>/<stylesheet>.css, the -- stylesheet’s sandbox is expected to be at <template>/<sandbox_title>/<stylesheet>.css -- Set to nil to disable sandbox links. cfg['sandbox_title'] = 'sandbox' -- Error category: this category is added if the module call contains errors -- (e.g. no stylesheet listed). A category name without namespace, or nil -- to disable categorization (not recommended). cfg['error_category'] = 'Uses TemplateStyles templates with errors' -- Default category: this category is added if no custom category is specified -- in module/template call. A category name without namespace, or nil -- to disable categorization. cfg['default_category'] = 'Templates using TemplateStyles' -- Protection conflict category: this category is added if the protection level -- of any stylesheet is lower than the protection level of the template. A category name -- without namespace, or nil to disable categorization (not recommended). cfg['protection_conflict_category'] = 'Templates using TemplateStyles with a different protection level' -- Hierarchy of protection levels, used to determine whether one protection level is lower -- than another and thus should populate protection_conflict_category. No protection is treated as zero cfg['protection_hierarchy'] = { autoconfirmed = 1, extendedconfirmed = 2, templateeditor = 3, sysop = 4 } -- Padlock pattern: Lua pattern to search on protected stylesheets for, or nil -- to disable padlock check. cfg['padlock_pattern'] = '{{pp-' -- Missing padlock category: this category is added if a protected stylesheet -- doesn’t contain any padlock template (specified by the above Lua pattern). -- A category name without namespace (no nil allowed) if the pattern is not nil, -- unused (and thus may be nil) otherwise. cfg['missing_padlock_category'] = 'Templates using TemplateStyles without padlocks' return cfg -- Don’t touch this line. 58e7a37c44f6ea3f6b8af54a559d696cc7256493 Module:Infobox/doc 828 242 484 483 2023-01-16T18:15:56Z BEELETH 2 1 revision imported: Import from Wikipedia wikitext text/x-wiki {{High-use|3308957|all-pages = yes}} {{module rating|protected}} {{Lua|Module:Navbar}} {{Uses TemplateStyles|Module:Infobox/styles.css|Template:Hlist/styles.css|Template:Plainlist/styles.css}} '''Module:Infobox''' is a [[WP:Module|module]] that implements the {{tl|Infobox}} template. Please see the template page for usage instructions. == Tracking categories == * {{clc|Pages using infobox templates with ignored data cells}} * {{clc|Articles using infobox templates with no data rows}} * {{clc|Pages using embedded infobox templates with the title parameter}} <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox|| [[Category:Modules that add a tracking category]] [[Category:Wikipedia infoboxes]] [[Category:Infobox modules]] [[Category:Modules that check for strip markers]] }}</includeonly> 5381394a0c0d893c8387fa699e9e185a298bd831 Template:Plainlist/styles.css 10 243 486 485 2023-01-16T18:15:56Z BEELETH 2 1 revision imported: Import from Wikipedia text text/plain /* {{pp-template|small=yes}} */ .plainlist ol, .plainlist ul { line-height: inherit; list-style: none; margin: 0; padding: 0; /* Reset Minerva default */ } .plainlist ol li, .plainlist ul li { margin-bottom: 0; } 51706efa229ff8794c0d94f260a208e7c5e6ec30 Module:TemplateStyles 828 244 487 2023-01-16T19:28:22Z BEELETH 2 Hopefully this works?? Scribunto text/plain return function (CSS_page) return mw.getCurrentFrame():extensionTag{ name = "templatestyles", args = { src = CSS_page } } end d3d1af185bd67ec39d0f226d5afc3c21fe548702 Halberd (character) 0 166 488 328 2023-01-16T19:28:44Z BEELETH 2 Began work on page. wikitext text/x-wiki {{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear/chub|label7=Pronouns|data7=* they/them * he/him * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous}} '''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s sonas as well as a representation of them in the future. He was originally created in late 2022 as a Roblox avatar, but was further developed in early 2023 to become something more. == Personality == As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit more exaggerated to an extent. == Appearance == By default, he is typically portrayed as a short, heavyset man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. === Other design notes === Halberd is allowed to be portrayed in any clothing, but his palette or certain elements can vary somewhat across certain alternate designs or certain artworks. * His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". * He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. ** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. ** As long as he isn't doing a lot of walking, he's fine with shorter shorts too. * Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. * His eye color is brown. == History == Placeholder text == Abilities == Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. # '''Becoming something else:''' Hal has been drawn as non-humans in the past. #* He has been drawn in a werewolf form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. == Trivia == Placeholder == Related pages == Placeholder b31f8e685d21e1761db5aead4a4e5571d71362af 491 488 2023-01-18T04:32:12Z BEELETH 2 Expanded some sections and rephrased some parts wikitext text/x-wiki {{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear/chub|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]}} '''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. == Personality == As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit more exaggerated to an extent. == Appearance == By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. === Other design notes === Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". * He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. ** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. ** As long as he isn't doing a lot of walking, he's fine with shorter shorts too. * Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. * His eye color is brown. == Creation and development == His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. == In-universe history == He does not have a backstory nor does he canonically exist in [[Vast Space]]. == Abilities == Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. # '''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #* He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #* As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of vienna sausages and drinking the broth in below 20 seconds:''' Dear God. == Trivia == * His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. ** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs. ** A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. * BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. == Related pages == TBA 91db1495a194877b7e37a9e0c03b004535139923 497 491 2023-01-18T05:50:08Z BEELETH 2 Added categories wikitext text/x-wiki {{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear/chub|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]}} '''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. == Personality == As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit more exaggerated to an extent. == Appearance == By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. === Other design notes === Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". * He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. ** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. ** As long as he isn't doing a lot of walking, he's fine with shorter shorts too. * Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. * His eye color is brown. == Creation and development == His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. == In-universe history == He does not have a backstory nor does he canonically exist in [[Vast Space]]. == Abilities == Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. # '''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #* He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #* As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of vienna sausages and drinking the broth in below 20 seconds:''' Dear God. == Trivia == * His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. ** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs. ** A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. * BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. == Related pages == TBA [[Category:Sonas]] [[Category:Characters]] [[Category:LGBT+ characters]] [[Category:Non-canon]] 2d878aaec25f08b6a4202a2f7295f6e55f059367 VAST SPACE ARCHIVES: Beeleth Wiki:About 0 245 489 2023-01-16T21:17:57Z BEELETH 2 Created page placeholder; will edit momentarily wikitext text/x-wiki Placeholder text 25610c1bb7ae174851472ee3c45744ba20a07a81 490 489 2023-01-16T21:42:18Z BEELETH 2 Filled out page. wikitext text/x-wiki The '''Vast Space Archives''' (alternatively called '''Beeleth Wiki''' or anything remotely recognizable as referring to this wiki in particular) is the official wiki of [[BEELETH]]'s character/project universe, and is able to be freely edited by those who wish to participate in expanding its contents. It was once hosted elsewhere, but has since been moved to Miraheze and will continue to recieve updates exclusively on Miraheze. Though the main focus is on firsthand canon media and characters, those who create their own content for the shared universe are allowed to add their own pages in good faith as long as they make it extremely clear on each page that their content may or may not be actually recognized as existent in the official canon. Users can request for the topics of their page to become canon by contacting BEELETH. == History == Beeleth Wiki was originally hosted on Fandom until towards the end of 2022, by which BEEL decided to transfer it to Miraheze. A database outage forced edits to be made the following year rather than shortly after the wiki's creation. == Things to do == If you would like to help around with the wiki or familiarize yourself with it, be sure to try: * Ensuring pages contain detailed information that lines up with known or written information provided from firsthand, canon media/sources * Uploading relevant images, audio, and videos that do not already exist on the wiki * Helping repair broken templates, modules, and pages (the transition to Miraheze was ''rough''!) * Reading the pages already present here The [[Vast Space]] is constantly expanding, so things written here often become outdated quickly. It's always helpful to provide quick edits to update pages to be accurate rather than to wait until lots of new information drops and make one large edit. === Guidelines === [[:Category:Wiki guides|Guide pages]] regarding the wiki will be provided eventually, but do not currently exist as of this edit. These pages will help clarify what is expected to be on each page, how they should be formatted, and what is not allowed to be posted and/or referenced among other helpful things. In the meantime, please ensure that all edits and uploads follow all of Miraheze's policies. Do not post any private information regardless of who or what it is tied to, and ensure that all content provided here is relevant and of high quality (or will lead up to such standards in the future). == Conclusion == Thanks for coming to the Vast Space Archives, and please consider helping out! Every edit means a lot. 707f4d05acdadd0f49857be7f219886e86c301c5 Human 0 246 492 2023-01-18T04:32:58Z BEELETH 2 Created redirect wikitext text/x-wiki #REDIRECT [[Humans]] dd01b2ed05af74ec61610572afbfd9855a658923 Vast Space 0 247 493 2023-01-18T05:38:21Z BEELETH 2 Began work on page. wikitext text/x-wiki {{Infobox|above=Vast Space|header1=Creation and development|label2=Development|label3=Creator(s)|data2=Unknown|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Beelethverse * The Multiverse * Everything|label6=Guardian(s)|data6=* [[Origin]] (creator/deity) * [[Cosmic Warden]] (protector)|label7=Sub-Spaces, universes, and timelines|data7=* [[Abstract Space]] * [[Sender Space]] * [[Uncharted Space]] * [[Anomaly Space]] * [[World's End Timeline]] * Several smaller, obscure Spaces}} '''Vast Space''' (also occasionally called the '''Beelethverse''' outside of canon materials) is the place in which all canon or theoretical events occur in [[BEELETH]]'s shared character multiverse. It is overseen by [[Origin]] and at least one [[Cosmic Warden]]; this [[Space]] is split into several smaller Spaces with their own [[deities]], sub-properties, and/or sub-laws. == Creation and development == The Vast Space has existed for as long as the character universe had been split into smaller Spaces, but was not given a name nor recognized for several years. == In-universe history == It is uncertain when the Vast Space was created. == Spatial characteristics == As do all Spaces, Vast Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Vast Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present. === Traits === # Not all of the Vast Space's sub-Spaces need to be created by a deity or an event; some are just naturally created. # Most Spaces and their contained universes have preset outcomes ("timelines"), but if they do not, it is likely the result of a [[spatial anomaly]] of some sort. #* [[World's End Timeline]] is a "Schrodinger's timeline" where [[Sir Ves]]' [[parasite]] gains the means to rewrite the entirety of Vast Space into a single, ruined version that combines a handful of Space elements that survive the event. #* Galfleet Heaven was originally intended to have two outcomes as a result of Volta, who was created as an angel-like villain at the time rather than as a soul-based entity as it exists in the Uncharted Space. # Spaces and their contained universes tend to constantly be occurring in the past, present, and future; they are endlessly "playing", "rewinding", and are also "paused". Time exists incomprehensibly across them and happens at what feels like its own convenience. # Most Spaces and their contained universes are unable to communicate across one another, but there have been exceptions resulting from spatial anomalies or certain natural conditions. # Humans usually exist at some point in each universe, but this is not always the case. === Laws === # Nothing is allowed to exist beyond Vast Space unless it is even more incomprehensibly vast or powerful. This is almost certainly impossible. #* Semi-canon crossovers are permitted if the other universe(s) are explained as being obscure, alternate timelines that diverge at the very beginning of the Vast Space's existence. # All worlds contained in the Vast Space must have the [[Great Gobbler]] and his most notable historical event present in some way. #* He does not have to be human. # The [[Auophian pantheon]], best described as the descendants of Origin, naturally have higher precedence over most other deities. #* Amongst themselves, Origin is the highest-ranked deity, with Abstract second to him. The rest of the pantheon is ranked below Abstract and are equal to one another unless they are demigods, in which they are ranked below them but above average people. #* Abstract is the highest-ranked deity of a sub-Space. The rest of the pantheon are the highest-ranked deities within any universe. # Logical/literal memories are stored in minds, and emotional/implied memories are stored in souls. Logical people have stronger minds, and emotional people have stronger souls. # Living things, regardless of whether they are organic or artificial, normally have minds. Souls, on the other hand, only naturally occur in organic living things. # Loose souls will usually gravitate towards empty or partial vessels, or they will gravitate towards more powerful souls in order to fuse with them. In the event a soul fuses, == Trivia == * TBA == Related pages == TBA 418bc6026db3b97f6a6401a50e791271d220c62b 496 493 2023-01-18T05:48:33Z BEELETH 2 Added some text and fixed infobox wikitext text/x-wiki {{Infobox|above=Vast Space|header1=Creation and development|label2=Development|label3=Creator(s)|data2=Unknown|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Beelethverse * The Multiverse * Everything|label6=Guardian(s)|data6=* [[Origin]] (creator/deity) * [[Cosmic Warden]] (protector)|label7=Sub-Spaces, universes, and timelines|data7=* [[Abstract Space]] * [[Sender Space]] * [[Uncharted Space]] * [[Anomaly Space]] * [[World's End Timeline]] * Several smaller, obscure Spaces}} '''Vast Space''' (also occasionally called the '''Beelethverse''' outside of canon materials) is the place in which all canon or theoretical events occur in [[BEELETH]]'s shared character multiverse. It is overseen by [[Origin]] and at least one [[Cosmic Warden]]; this [[Space]] is split into several smaller Spaces with their own [[deities]], sub-properties, and/or sub-laws. == Creation and development == The Vast Space has existed for as long as the character universe had been split into smaller Spaces, but was not given a name nor recognized for several years. == In-universe history == It is uncertain when the Vast Space was created, but for as long as it has existed, Origin has protected it. == Spatial characteristics == As do all Spaces, Vast Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Vast Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present. === Traits === # Not all of the Vast Space's sub-Spaces need to be created by a deity or an event; some are just naturally created. # Most Spaces and their contained universes have preset outcomes ("timelines"), but if they do not, it is likely the result of a [[spatial anomaly]] of some sort. #* [[World's End Timeline]] is a "Schrodinger's timeline" where [[Sir Ves]]' [[parasite]] gains the means to rewrite the entirety of Vast Space into a single, ruined version that combines a handful of Space elements that survive the event. #* Galfleet Heaven was originally intended to have two outcomes as a result of Volta, who was created as an angel-like villain at the time rather than as a soul-based entity as it exists in the Uncharted Space. # Spaces and their contained universes tend to constantly be occurring in the past, present, and future; they are endlessly "playing", "rewinding", and are also "paused". Time exists incomprehensibly across them and happens at what feels like its own convenience. # Most Spaces and their contained universes are unable to communicate across one another, but there have been exceptions resulting from spatial anomalies or certain natural conditions. # Humans usually exist at some point in each universe, but this is not always the case. === Laws === # Nothing is allowed to exist beyond Vast Space unless it is even more incomprehensibly vast or powerful. This is almost certainly impossible. #* Semi-canon crossovers are permitted if the other universe(s) are explained as being obscure, alternate timelines that diverge at the very beginning of the Vast Space's existence. # All worlds contained in the Vast Space must have the [[Great Gobbler]] and his most notable historical event present in some way. #* He does not have to be human. # The [[Auophian pantheon]], best described as the descendants of Origin, naturally have higher precedence over most other deities. #* Amongst themselves, Origin is the highest-ranked deity, with Abstract second to him. The rest of the pantheon is ranked below Abstract and are equal to one another unless they are demigods, in which they are ranked below them but above average people. #* Abstract is the highest-ranked deity of a sub-Space. The rest of the pantheon are the highest-ranked deities within any universe. # Logical/literal memories are stored in minds, and emotional/implied memories are stored in souls. Logical people have stronger minds, and emotional people have stronger souls. # Living things, regardless of whether they are organic or artificial, normally have minds. Souls, on the other hand, only naturally occur in organic living things. # Loose souls will usually gravitate towards empty or partial vessels, or they will gravitate towards more powerful souls in order to fuse with them. In the event a soul fuses, == Trivia == * TBA == Related pages == TBA 7ff47503e5d10de9fa003a921e483cd4298a416c Styles.css 0 248 494 2023-01-18T05:46:28Z BEELETH 2 BEELETH created the page [[Styles.css]] using a non-default content model "Sanitized CSS": Necessary for TemplateStyles to function correctly sanitized-css text/css da39a3ee5e6b4b0d3255bfef95601890afd80709 Module:Infobox/styles.css 828 183 495 360 2023-01-18T05:47:27Z BEELETH 2 BEELETH changed the content model of the page [[Module:Infobox/styles.css]] from "plain text" to "Sanitized CSS": Necessary for TemplateStyles to function correctly sanitized-css text/css /* {{pp|small=y}} */ /* * This TemplateStyles sheet deliberately does NOT include the full set of * infobox styles. We are still working to migrate all of the manual * infoboxes. See [[MediaWiki talk:Common.css/to do#Infobox]] * DO NOT ADD THEM HERE */ /* * not strictly certain these styles are necessary since the modules now * exclusively output infobox-subbox or infobox, not both * just replicating the module faithfully */ .infobox-subbox { padding: 0; border: none; margin: -3px; width: auto; min-width: 100%; font-size: 100%; clear: none; float: none; background-color: transparent; } .infobox-3cols-child { margin: auto; } .infobox .navbar { font-size: 100%; } /* T281642 */ body.skin-minerva .infobox-header, body.skin-minerva .infobox-subheader, body.skin-minerva .infobox-above, body.skin-minerva .infobox-title, body.skin-minerva .infobox-image, body.skin-minerva .infobox-full-data, body.skin-minerva .infobox-below { text-align: center; } e8de6d96f4fde53afc4a6b0fed534405ab59b0a7 File:Pixelevy.ico 6 249 498 2023-01-18T05:56:04Z BEELETH 2 Everyman favicon wikitext text/x-wiki == Summary == Everyman favicon 7bf1a85a17cd1b200c2daaa4681ec46c9b9d68bb File:Pixelevy.png 6 250 499 2023-01-18T05:56:54Z BEELETH 2 Everyman favicon, but as a png wikitext text/x-wiki == Summary == Everyman favicon, but as a png 69f7dd01f3ba70e2c4066e8b15b2155716a0f609 File:Pixelevybig.png 6 251 500 2023-01-18T05:57:54Z BEELETH 2 Everyman icon, but big wikitext text/x-wiki == Summary == Everyman icon, but big 79218d1fb7fae5cada35b4dd902ddfbcf8bc6a20 File:Halbleh.png 6 252 501 2023-01-18T06:03:24Z BEELETH 2 i'm so sorry wikitext text/x-wiki == Summary == i'm so sorry f2870e42e2e14e75237963641acd9b0e658594e8 Halberd (character) 0 166 502 497 2023-01-18T06:21:25Z BEELETH 2 idk wikitext text/x-wiki {{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear/chub|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]}} '''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. == Personality == [[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]] As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky. He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly. Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling. == Appearance == By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. === Other design notes === Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". * He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. ** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. ** As long as he isn't doing a lot of walking, he's fine with shorter shorts too. * Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. * In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light golden-colored buckle, and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves. * His eye color is brown. == Creation and development == His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. == In-universe history == He does not have a backstory nor does he canonically exist in [[Vast Space]]. == Abilities == Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. # '''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #* He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #* As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God. == Trivia == * His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. ** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs. ** A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. * BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. == Related pages == * [[BEELETH]], Hal's real-world counterpart * [[BEELETH's sona]], another representation of BEELETH [[Category:Sonas]] [[Category:Characters]] [[Category:LGBT+ characters]] [[Category:Non-canon]] d224b2d0597a3b1e8445ece5c56ffd66874acfe1 503 502 2023-01-18T06:23:13Z BEELETH 2 yeah......... wikitext text/x-wiki {{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]}} '''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. == Personality == [[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]] As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky. He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly. Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling. == Appearance == By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. === Other design notes === Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". * He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. ** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. ** As long as he isn't doing a lot of walking, he's fine with shorter shorts too. * Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. * In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light golden-colored buckle, and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves. * His eye color is brown. == Creation and development == His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. == In-universe history == He does not have a backstory nor does he canonically exist in [[Vast Space]]. == Abilities == Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. # '''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #* He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #* As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God. == Trivia == * His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. ** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs. ** A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. * BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. == Related pages == * [[BEELETH]], Hal's real-world counterpart * [[BEELETH's sona]], another representation of BEELETH [[Category:Sonas]] [[Category:Characters]] [[Category:LGBT+ characters]] [[Category:Non-canon]] d734da60a18717df8f9e8ac958bedff17ca1daeb 517 503 2023-01-19T00:30:45Z BEELETH 2 idk! wikitext text/x-wiki {{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al * Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}} '''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. == Personality == [[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]] As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky. He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly. Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling. == Appearance == By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. === Other design notes === Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". * He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. ** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. ** As long as he isn't doing a lot of walking, he's fine with shorter shorts too. * Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. * In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves. * His eye color is brown. == Creation and development == His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. == In-universe history == He does not have a backstory nor does he canonically exist in [[Vast Space]]. == Abilities == Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. # '''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #* He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #* As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God. == Trivia == * His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. ** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men. ** A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. * BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. * Halberd White as a name is a reference to a voice line from Toontown spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. ** However, he is not actually a doctor. == Related pages == * [[BEELETH]], Hal's real-world counterpart * [[BEELETH's sona]], another representation of BEELETH [[Category:Sonas]] [[Category:Characters]] [[Category:LGBT+ characters]] [[Category:Non-canon]] d589be7ef26fca5bd7a92a490c1809f2b3c324c4 526 517 2023-01-19T22:08:45Z BEELETH 2 test wikitext text/x-wiki {{Mbox|name=noncanon|text=<h4>The topic of this article does not exist in the [[Vast Space]].</h4> This [[non-canon]] page exists on the wiki because it is tied in some way to a creator (or otherwise notable person) within the Vast Space community and is notable enough to be listed here.}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al * Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}} '''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. == Personality == [[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]] As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky. He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly. Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling. == Appearance == By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. === Other design notes === Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". * He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. ** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. ** As long as he isn't doing a lot of walking, he's fine with shorter shorts too. * Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. * In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves. * His eye color is brown. == Creation and development == His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. == In-universe history == He does not have a backstory nor does he canonically exist in [[Vast Space]]. == Abilities == Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. # '''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #* He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #* As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God. == Trivia == * His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. ** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men. ** A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. * BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. * Halberd White as a name is a reference to a voice line from Toontown spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. ** However, he is not actually a doctor. == Related pages == * [[BEELETH]], Hal's real-world counterpart * [[BEELETH's sona]], another representation of BEELETH [[Category:Sonas]] [[Category:Characters]] [[Category:LGBT+ characters]] [[Category:Non-canon]] 6b7e987e0574831c1c46bbeb8c32605176e2846e 527 526 2023-01-19T22:09:12Z BEELETH 2 test wikitext text/x-wiki {{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because it is tied in some way to a creator (or otherwise notable person) within the Vast Space community and is notable enough to be listed here.}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al * Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}} '''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. == Personality == [[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]] As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky. He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly. Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling. == Appearance == By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. === Other design notes === Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". * He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. ** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. ** As long as he isn't doing a lot of walking, he's fine with shorter shorts too. * Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. * In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves. * His eye color is brown. == Creation and development == His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. == In-universe history == He does not have a backstory nor does he canonically exist in [[Vast Space]]. == Abilities == Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. # '''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #* He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #* As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God. == Trivia == * His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. ** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men. ** A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. * BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. * Halberd White as a name is a reference to a voice line from Toontown spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. ** However, he is not actually a doctor. == Related pages == * [[BEELETH]], Hal's real-world counterpart * [[BEELETH's sona]], another representation of BEELETH [[Category:Sonas]] [[Category:Characters]] [[Category:LGBT+ characters]] [[Category:Non-canon]] 4089bccac5ffc7450d635e0d3855c6402896a68d 531 527 2023-01-19T22:13:11Z BEELETH 2 test wikitext text/x-wiki {{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.|cat=Non-canon}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al * Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}} '''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. == Personality == [[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]] As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky. He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly. Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling. == Appearance == By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. === Other design notes === Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". * He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. ** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. ** As long as he isn't doing a lot of walking, he's fine with shorter shorts too. * Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. * In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves. * His eye color is brown. == Creation and development == His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. == In-universe history == He does not have a backstory nor does he canonically exist in [[Vast Space]]. == Abilities == Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. # '''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #* He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #* As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God. == Trivia == * His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. ** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men. ** A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. * BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. * Halberd White as a name is a reference to a voice line from Toontown spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. ** However, he is not actually a doctor. == Related pages == * [[BEELETH]], Hal's real-world counterpart * [[BEELETH's sona]], another representation of BEELETH [[Category:Sonas]] [[Category:Characters]] [[Category:LGBT+ characters]] [[Category:Non-canon]] 80c84159a26943a78106469976ca2fff27b7d4a0 533 531 2023-01-19T22:14:37Z BEELETH 2 I CANT MAKE CATEGORY MBOXES WORK ARRGHHHH (removed category setting from mbox) wikitext text/x-wiki {{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al * Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}} '''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. == Personality == [[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]] As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky. He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly. Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling. == Appearance == By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. === Other design notes === Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". * He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. ** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. ** As long as he isn't doing a lot of walking, he's fine with shorter shorts too. * Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. * In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves. * His eye color is brown. == Creation and development == His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. == In-universe history == He does not have a backstory nor does he canonically exist in [[Vast Space]]. == Abilities == Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. # '''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #* He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #* As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God. == Trivia == * His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. ** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men. ** A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. * BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. * Halberd White as a name is a reference to a voice line from Toontown spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. ** However, he is not actually a doctor. == Related pages == * [[BEELETH]], Hal's real-world counterpart * [[BEELETH's sona]], another representation of BEELETH [[Category:Sonas]] [[Category:Characters]] [[Category:LGBT+ characters]] [[Category:Non-canon]] 83be7ef79e68937ab1605722f6293c990d5a6126 547 533 2023-01-20T23:47:40Z BEELETH 2 wikitext text/x-wiki {{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al * Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}} <small>''Not to be confused with [[BEELETH]].''</small> '''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. ==Personality== [[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]] As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky. He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly. Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling. ==Appearance== By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. ===Other design notes=== Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. *His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". *He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. **Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. **As long as he isn't doing a lot of walking, he's fine with shorter shorts too. * Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. *In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves. *His eye color is brown. ==Creation and development== His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. ==In-universe history == He does not have a backstory nor does he canonically exist in [[Vast Space]]. ==Abilities== Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. #'''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #*As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God. ==Trivia== *His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. **These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men. **A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. *BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. *Halberd White as a name is a reference to a voice line from Toontown spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. **However, he is not actually a doctor. ==Related pages== *[[BEELETH]], Hal's real-world counterpart *[[BEELETH's sona]], another representation of BEELETH [[Category:Sonas]] [[Category:Characters]] [[Category:LGBT+ characters]] [[Category:Non-canon]] 3f4d36fd634b0ca985fe0b439bddd2018ae48667 Sona 0 253 504 2023-01-18T21:20:05Z BEELETH 2 Added redirect wikitext text/x-wiki #REDIRECT [[Sonas]] e4a8f81fc45e82b40f45dd4c131407cab67b79fc 506 504 2023-01-18T21:21:48Z BEELETH 2 Changed redirect wikitext text/x-wiki #REDIRECT [[:Category:Sonas]] 243f118ff5c465b75fc238f818f918f112dea089 Sonas 0 254 505 2023-01-18T21:21:05Z BEELETH 2 Created redirect wikitext text/x-wiki #REDIRECT [[:Category:Sonas]] 243f118ff5c465b75fc238f818f918f112dea089 Category:Sonas 14 255 507 2023-01-18T21:24:07Z BEELETH 2 Created page wikitext text/x-wiki '''Sonas''' are a type of [[character]] that represent their real-world creator/owner. A sona may not always be an exact match to their associated person, but may have some (or none) of their characteristics, whether they are physical, emotional, or any other type of similarity. 71574aa39e30fde5c080ca2ebb3a9855508e2ff2 510 507 2023-01-18T21:26:51Z BEELETH 2 Added category wikitext text/x-wiki '''Sonas''' are a type of [[character]] that represent their real-world creator/owner. A sona may not always be an exact match to their associated person, but may have some (or none) of their characteristics, whether they are physical, emotional, or any other type of similarity. [[Category:Characters]] 86f7bf5e78c01f92130008d48c59b18637b7ae45 511 510 2023-01-18T21:28:27Z BEELETH 2 Added more text wikitext text/x-wiki '''Sonas''' are a type of [[character]] that represent, embody, and/or resemble their real-world creator/owner. A sona may not always be an exact match to their associated person, but may have some (or none) of their characteristics, whether they are physical, emotional, or any other type of similarity. They may or may not be canon to the Vast Space, but are still to be documented here when possible if they are relevant to someone active in the Vast Space community or the Vast Space Archives. [[Category:Characters]] 3bae07e909bf84a43f94300cabd3ac328a77c1ff Character 0 256 508 2023-01-18T21:24:37Z BEELETH 2 Created redirect wikitext text/x-wiki #REDIRECT [[:Category:Characters]] 484708e16da02d73d88b729e91d6612ea46b6eed Characters 0 257 509 2023-01-18T21:25:46Z BEELETH 2 Added redirect wikitext text/x-wiki #REDIRECT [[:Category:Characters]] 484708e16da02d73d88b729e91d6612ea46b6eed Template:Mbox 10 258 512 2023-01-18T21:42:46Z BEELETH 2 Copied from the Dev wiki wikitext text/x-wiki {{Documentation subpage}} <!-- Please add categories to the /doc subpage, and interwikis at Wikidata (see Wikipedia:Wikidata) --> {{tl|mbox}} stands '''m'''essage '''box''', which is a metatemplate used to build message boxes for other templates. It offers several different colours, images and some other features. ==Basic usage== The box below shows the most common parameters that are accepted by {{Tl|mbox}}. The purpose of each is described below. <pre style="overflow:auto;"> {{mbox | name = | small = {{{small|}}} | type = | image = | sect = {{{1|}}} | issue = | talk = {{{talk|}}} | fix = | date = {{{date|}}} | cat = | all = }} </pre> ==Full usage== The "All parameters" box shows all possible parameters for this template. However, it is not recommended to copy this, because it will never be required to use all parameters simultaneously. {| class="wikitable" align="left" style="background:transparent; width=30%;" !All parameters |- |<pre style="font-size:100%"> {{mbox | name = | small = {{{small|}}} | type = | image = | imageright = | smallimage = | smallimageright = | class = | style = | textstyle = | sect = {{{1|}}} | issue = | talk = {{{talk|}}} | fix = | date = {{{date|}}} | text = | smalltext = | plainlinks = no | removalnotice = | cat = | all = | cat2 = | all2 = | cat3 = | all3 = }} </pre> |} {{clear}} ==Common parameters== === ''name'' === The ''name'' parameter specifies the name of the template, without the Template namespace prefix. For example [[w:Template:Underlinked]] specifies {{Para|name|Underlinked}}. This parameter should be updated if the template is ever moved. The purpose of this parameter is to allow the template to have a more useful display on its template page, for example to show the date even when not specified, and to apply categorisation of the template itself. === ''small'' === The ''small'' parameter should be passed through the template, as this will allow editors to use the small format by specifying {{para|small|left}} on an article: {{mbox|nocat=true|small=left|text=This is the small left-aligned mbox format.}} Otherwise the standard format will be produced: {{mbox|nocat=true|text=This is the standard mbox format.}} Other variations: * For templates which should ''never'' be small, specify {{Para|small|no}} or do not pass the small parameter at all. * For templates which should ''always'' be small, just specify {{Para|small|left}}. * For templates which should ''default to small'', try {{para|small|<nowiki>{{{small|left}}}</nowiki>}}. This will allow an editor to override by using {{para|small|no}} on an article. To use a small box that adjusts its width to match the text, use {{para|style|width: auto; margin-right: 0px;}} and {{para|textstyle|width: auto;}} together: {{mbox|nocat=true|small=left|style=width: auto; margin-right: 0px;|textstyle=width: auto; margin-right: 0px;|text=This is the small left-aligned Ambox format with flexible width.}} See [[#Sect]] below for more information on how to limit {{para|small}} display to cases when the template is being used for a section instead of the whole article (recommended, to prevent inconsistent top-of-article display). === ''type'' === The ''type'' parameter defines the colour of the left bar, and the image that is used by default. The type is chosen not on aesthetics but is based on the type of issue that the template describes. The seven available types and their default images are shown below. {{mbox |nocat=true | type = speedy | text = type=<u>speedy</u> – Speedy deletion issues }} {{mbox |nocat=true | type = delete | text = type=<u>delete</u> – Deletion issues, }} {{mbox |nocat=true | type = content | text = type=<u>content</u> – Content issues }} {{mbox |nocat=true | type = style | text = type=<u>style</u> – Style issues }} {{mbox |nocat=true | type = notice | text = type=<u>notice</u> – Article notices {{mbox |nocat=true | type = move | text = type=<u>move</u> – Merge, split and transwiki proposals }} {{mbox |nocat=true | type = protection | text = type=<u>protection</u> – Protection notices, }} If no ''type'' parameter is given the template defaults to {{para|type|notice}}. === ''image'' === You can choose a specific image to use for the template by using the ''image'' parameter. Images are specified using the standard syntax for inserting files. Widths of 40-50px are typical. Please note: * If no image is specified then the default image corresponding to the ''type'' is used. (See [[#type]] above.) * If {{para|image|none}} is specified, then no image is used and the text uses the whole message box area. === ''sect'' === Many message templates begin with the text '''This article ...''' and it is often desirable that this wording change to '''This section ...''' if the template is used on a section instead. The value of this parameter will replace the word "article". Various possibilities for use include: {{para|sect|list}}, {{para|sect|table}}, {{para|sect|"In popular culture" material}}, etc. If using this feature, be sure to remove the first two words ("This article") from the template's text, otherwise it will be duplicated. A common way to facilitate this functionality is to pass {{para|sect|<nowiki>{{{1|}}}</nowiki>}}. This will allow editors to type <kbd>section</kbd>, for example, as the first unnamed parameter of the template to change the wording. Another approach is to pass {{para|sect|<nowiki>{{{section|{{{sect|}}}}}}</nowiki>}} to provide a named value. === ''issue'' and ''fix'' === The ''issue'' parameter is used to describe the issue with the page. Try to keep it short and to-the-point (approximately 10-20 words). The ''fix'' parameter contains some text which describes what should be done to improve the page. It may be longer than the text in ''issue'', but should not usually be more than two sentences. When the template is in its small form (when using {{para|small|left}}), the ''issue'' is the only text that will be displayed. For example [[w:Template:Citation style]] defines When used stand-alone it produces the whole text: But when used with |small=left it displays only the issue: === ''talk'' === Some message templates include a link to the talk page, and allow an editor to specify a section heading to link directly to the relevant section. To achieve this functionality, simply pass the ''talk'' parameter through, i.e. talk=<nowiki>{{{talk|}}}</nowiki> This parameter may then be used by an editor as follows: * talk=SECTION HEADING – the link will point to the specified section on the article's talk page, e.g. talk=Foo. * talk=FULL PAGE NAME – the template will link to the page specified (which may include a section anchor), e.g. talk=Talk:Banana#Foo Notes: * When this parameter is used by a template, the talk page link will appear on the template itself (in order to demonstrate the functionality) but this will only display on articles if the parameter is actually defined. * In order to make sure there is always a link to the talk page, you can use |talk=<nowiki>{{{talk|#}}}</nowiki>. * If the talk page does not exist, there will be no link, whatever the value of the parameter. === ''date'' === Passing the ''date'' parameter through to the meta-template means that the date that the article is tagged may be specified by an editor (or more commonly a bot). This will be displayed after the message in a smaller font. Passing this parameter also enables monthly cleanup categorisation when the ''cat'' parameter is also defined. === ''info'' === This parameter is for specifying additional information. Whatever you add here will appear after the date. === ''cat'' === This parameter defines a monthly cleanup category. If |cat=CATEGORY then: * articles will be placed in '''Category:CATEGORY from DATE''' if |date=DATE is specified. * articles will be placed in '''Category:CATEGORY''' if the date is not specified. For example, [[w:Template:No footnotes]] specifies |cat=Articles lacking in-text citations and so an article with the template {{Tlx|No footnotes|2=date=June 2010|SISTER=w:}} will be placed in [[w:Category:Articles lacking in-text citations from June 2010]]. The ''cat'' parameter should not be linked, nor should the prefix <code>Category:</code> be used. === ''all'' === The ''all'' parameter defines a category into which all articles should be placed. The ''all'' parameter should not be linked, nor should the prefix <code>Category:</code> be used. == Additional parameters == === ''imageright'' === An image on the right side of the message box may be specified using this parameter. The syntax is the same as for the ''image'' parameter, except that the default is no image. === ''smallimage'' and ''smallimageright'' === Images for the small format box may be specified using these parameters. They will have no effect unless {{para|small|left}} is specified. === ''class'' === Custom [[w:Cascading Style Sheets|CSS]] classes to apply to the box. If adding multiple classes, they should be space-separated. === ''style'' and ''textstyle'' === Optional CSS values may be defined, without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>. * ''style'' specifies the style used by the entire message box table. This can be used to do things such as modifying the width of the box. * ''textstyle'' relates to the text cell. === ''text'' and ''smalltext'' === Instead of specifying the ''issue'' and the ''fix'' it is possible to use the ''text'' parameter instead. Customised text for the small format can be defined using ''smalltext''. === ''plainlinks'' === Normally on Wikipedia, external links have an arrow icon next to them, like this: [http://www.example.com Example.com]. However, in message boxes, the arrow icon is suppressed by default, like this: <span class="plainlinks">[http://www.example.com Example.com]</span>. To get the normal style of external link with the arrow icon, use {{para|plainlinks|no}}. === ''cat2'', ''cat3'', ''all2'', and ''all3'' === * ''cat2'' and ''cat3'' provide for additional monthly categories; see [[#cat]]. * ''all2'' and ''all3'' provide for additional categories into which all articles are placed, just like [[#all]]. == Technical notes == * If you need to use special characters in the text parameter then you need to escape them like this: <syntaxhighlight lang="xml"> {{mbox |nocat=true | text = <div> Equal sign = and a start and end brace { } work fine as they are. But here is a pipe &#124; and two end braces <nowiki>}}</nowiki>. And now a pipe and end braces <nowiki>|}}</nowiki>. </div> }} </syntaxhighlight> {{mbox |nocat=true | text = <div> Equal sign = and a start and end brace { } work fine as they are. But here is a pipe &#124; and two end braces <nowiki>}}</nowiki>. And now a pipe and end braces <nowiki>|}}</nowiki>. </div> }} * The <code>&lt;div></code> tags that surround the text in the example above are usually not needed. But if the text contains line breaks then sometimes we get weird line spacing. This especially happens when using vertical dotted lists. Then use the div tags to fix that. * The default images for this meta-template are in png format instead of svg format. The main reason is that some older web browsers have trouble with the transparent background that MediaWiki renders for svg images. The png images here have hand optimised transparent background colour so they look good in all browsers. Note that svg icons only look somewhat bad in the old browsers, thus such hand optimisation is only worth the trouble for very widely used icons. == TemplateData == <templatedata> { "params": { "1": {}, "small": { "label": "Small Mode", "description": "The small parameter should be passed through the template, as this will allow editors to use the small format by specifying |small=left on an article.", "type": "string", "suggestedvalues": [ "no", "left" ] }, "talk": {}, "date": {}, "name": { "label": "Template Name", "description": "The name parameter specifies the name of the template, without the Template namespace prefix. ", "type": "string" }, "type": {}, "image": {}, "sect": {}, "issue": {}, "fix": {}, "info": {}, "cat": {}, "all": {}, "imageright": {}, "class": {}, "text ": {}, "plainlinks": {}, "smallimage ": {}, "smallimageright": {}, "textstyle": {}, "style ": {}, "smalltext": {}, "cat2": {}, "cat3": {}, "all2": {}, "all3": {} }, "paramOrder": [ "name", "small", "type", "image", "sect", "issue", "fix", "talk", "date", "1", "info", "cat", "all", "imageright", "class", "text ", "plainlinks", "smallimage ", "smallimageright", "textstyle", "style ", "smalltext", "cat2", "cat3", "all2", "all3" ] } </templatedata> <includeonly>[[Category:Notice templates]]</includeonly> 7b00ac1be5a47eeb858d5ff75f02906ce5d85ff2 514 512 2023-01-18T21:46:26Z BEELETH 2 Fixing it maybe?? wikitext text/x-wiki {{#invoke:Message box|mbox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> c262e205f85f774a23f74119179ceea11751d68e Template:Mbox/doc 10 259 513 2023-01-18T21:43:59Z BEELETH 2 Copied from the Dev wiki wikitext text/x-wiki === ''type'' === The ''type'' parameter defines the colour of the left bar, and the image that is used by default. The type is chosen not on aesthetics but is based on the type of issue that the template describes. The seven available types and their default images are shown below. {{mbox |nocat=true | type = speedy | text = type=<u>speedy</u> – Speedy deletion issues }} {{mbox |nocat=true | type = delete | text = type=<u>delete</u> – Deletion issues, }} {{mbox |nocat=true | type = content | text = type=<u>content</u> – Content issues }} {{mbox |nocat=true | type = style | text = type=<u>style</u> – Style issues }} {{mbox |nocat=true | type = notice | text = type=<u>notice</u> – Article notices {{mbox |nocat=true | type = move | text = type=<u>move</u> – Merge, split and transwiki proposals }} {{mbox |nocat=true | type = protection | text = type=<u>protection</u> – Protection notices, }} If no ''type'' parameter is given the template defaults to {{para|type|notice}}. a3f9151d1595360cfe96416e2e21d7aafe377045 516 513 2023-01-18T21:48:17Z BEELETH 2 Woops!!!!!!! wikitext text/x-wiki {{Documentation subpage}} <!-- Please add categories to the /doc subpage, and interwikis at Wikidata (see Wikipedia:Wikidata) --> {{tl|mbox}} stands '''m'''essage '''box''', which is a metatemplate used to build message boxes for other templates. It offers several different colours, images and some other features. ==Basic usage== The box below shows the most common parameters that are accepted by {{Tl|mbox}}. The purpose of each is described below. <pre style="overflow:auto;"> {{mbox | name = | small = {{{small|}}} | type = | image = | sect = {{{1|}}} | issue = | talk = {{{talk|}}} | fix = | date = {{{date|}}} | cat = | all = }} </pre> ==Full usage== The "All parameters" box shows all possible parameters for this template. However, it is not recommended to copy this, because it will never be required to use all parameters simultaneously. {| class="wikitable" align="left" style="background:transparent; width=30%;" !All parameters |- |<pre style="font-size:100%"> {{mbox | name = | small = {{{small|}}} | type = | image = | imageright = | smallimage = | smallimageright = | class = | style = | textstyle = | sect = {{{1|}}} | issue = | talk = {{{talk|}}} | fix = | date = {{{date|}}} | text = | smalltext = | plainlinks = no | removalnotice = | cat = | all = | cat2 = | all2 = | cat3 = | all3 = }} </pre> |} {{clear}} ==Common parameters== === ''name'' === The ''name'' parameter specifies the name of the template, without the Template namespace prefix. For example [[w:Template:Underlinked]] specifies {{Para|name|Underlinked}}. This parameter should be updated if the template is ever moved. The purpose of this parameter is to allow the template to have a more useful display on its template page, for example to show the date even when not specified, and to apply categorisation of the template itself. === ''small'' === The ''small'' parameter should be passed through the template, as this will allow editors to use the small format by specifying {{para|small|left}} on an article: {{mbox|nocat=true|small=left|text=This is the small left-aligned mbox format.}} Otherwise the standard format will be produced: {{mbox|nocat=true|text=This is the standard mbox format.}} Other variations: * For templates which should ''never'' be small, specify {{Para|small|no}} or do not pass the small parameter at all. * For templates which should ''always'' be small, just specify {{Para|small|left}}. * For templates which should ''default to small'', try {{para|small|<nowiki>{{{small|left}}}</nowiki>}}. This will allow an editor to override by using {{para|small|no}} on an article. To use a small box that adjusts its width to match the text, use {{para|style|width: auto; margin-right: 0px;}} and {{para|textstyle|width: auto;}} together: {{mbox|nocat=true|small=left|style=width: auto; margin-right: 0px;|textstyle=width: auto; margin-right: 0px;|text=This is the small left-aligned Ambox format with flexible width.}} See [[#Sect]] below for more information on how to limit {{para|small}} display to cases when the template is being used for a section instead of the whole article (recommended, to prevent inconsistent top-of-article display). === ''type'' === The ''type'' parameter defines the colour of the left bar, and the image that is used by default. The type is chosen not on aesthetics but is based on the type of issue that the template describes. The seven available types and their default images are shown below. {{mbox |nocat=true | type = speedy | text = type=<u>speedy</u> – Speedy deletion issues }} {{mbox |nocat=true | type = delete | text = type=<u>delete</u> – Deletion issues, }} {{mbox |nocat=true | type = content | text = type=<u>content</u> – Content issues }} {{mbox |nocat=true | type = style | text = type=<u>style</u> – Style issues }} {{mbox |nocat=true | type = notice | text = type=<u>notice</u> – Article notices {{mbox |nocat=true | type = move | text = type=<u>move</u> – Merge, split and transwiki proposals }} {{mbox |nocat=true | type = protection | text = type=<u>protection</u> – Protection notices, }} If no ''type'' parameter is given the template defaults to {{para|type|notice}}. === ''image'' === You can choose a specific image to use for the template by using the ''image'' parameter. Images are specified using the standard syntax for inserting files. Widths of 40-50px are typical. Please note: * If no image is specified then the default image corresponding to the ''type'' is used. (See [[#type]] above.) * If {{para|image|none}} is specified, then no image is used and the text uses the whole message box area. === ''sect'' === Many message templates begin with the text '''This article ...''' and it is often desirable that this wording change to '''This section ...''' if the template is used on a section instead. The value of this parameter will replace the word "article". Various possibilities for use include: {{para|sect|list}}, {{para|sect|table}}, {{para|sect|"In popular culture" material}}, etc. If using this feature, be sure to remove the first two words ("This article") from the template's text, otherwise it will be duplicated. A common way to facilitate this functionality is to pass {{para|sect|<nowiki>{{{1|}}}</nowiki>}}. This will allow editors to type <kbd>section</kbd>, for example, as the first unnamed parameter of the template to change the wording. Another approach is to pass {{para|sect|<nowiki>{{{section|{{{sect|}}}}}}</nowiki>}} to provide a named value. === ''issue'' and ''fix'' === The ''issue'' parameter is used to describe the issue with the page. Try to keep it short and to-the-point (approximately 10-20 words). The ''fix'' parameter contains some text which describes what should be done to improve the page. It may be longer than the text in ''issue'', but should not usually be more than two sentences. When the template is in its small form (when using {{para|small|left}}), the ''issue'' is the only text that will be displayed. For example [[w:Template:Citation style]] defines When used stand-alone it produces the whole text: But when used with |small=left it displays only the issue: === ''talk'' === Some message templates include a link to the talk page, and allow an editor to specify a section heading to link directly to the relevant section. To achieve this functionality, simply pass the ''talk'' parameter through, i.e. talk=<nowiki>{{{talk|}}}</nowiki> This parameter may then be used by an editor as follows: * talk=SECTION HEADING – the link will point to the specified section on the article's talk page, e.g. talk=Foo. * talk=FULL PAGE NAME – the template will link to the page specified (which may include a section anchor), e.g. talk=Talk:Banana#Foo Notes: * When this parameter is used by a template, the talk page link will appear on the template itself (in order to demonstrate the functionality) but this will only display on articles if the parameter is actually defined. * In order to make sure there is always a link to the talk page, you can use |talk=<nowiki>{{{talk|#}}}</nowiki>. * If the talk page does not exist, there will be no link, whatever the value of the parameter. === ''date'' === Passing the ''date'' parameter through to the meta-template means that the date that the article is tagged may be specified by an editor (or more commonly a bot). This will be displayed after the message in a smaller font. Passing this parameter also enables monthly cleanup categorisation when the ''cat'' parameter is also defined. === ''info'' === This parameter is for specifying additional information. Whatever you add here will appear after the date. === ''cat'' === This parameter defines a monthly cleanup category. If |cat=CATEGORY then: * articles will be placed in '''Category:CATEGORY from DATE''' if |date=DATE is specified. * articles will be placed in '''Category:CATEGORY''' if the date is not specified. For example, [[w:Template:No footnotes]] specifies |cat=Articles lacking in-text citations and so an article with the template {{Tlx|No footnotes|2=date=June 2010|SISTER=w:}} will be placed in [[w:Category:Articles lacking in-text citations from June 2010]]. The ''cat'' parameter should not be linked, nor should the prefix <code>Category:</code> be used. === ''all'' === The ''all'' parameter defines a category into which all articles should be placed. The ''all'' parameter should not be linked, nor should the prefix <code>Category:</code> be used. == Additional parameters == === ''imageright'' === An image on the right side of the message box may be specified using this parameter. The syntax is the same as for the ''image'' parameter, except that the default is no image. === ''smallimage'' and ''smallimageright'' === Images for the small format box may be specified using these parameters. They will have no effect unless {{para|small|left}} is specified. === ''class'' === Custom [[w:Cascading Style Sheets|CSS]] classes to apply to the box. If adding multiple classes, they should be space-separated. === ''style'' and ''textstyle'' === Optional CSS values may be defined, without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>. * ''style'' specifies the style used by the entire message box table. This can be used to do things such as modifying the width of the box. * ''textstyle'' relates to the text cell. === ''text'' and ''smalltext'' === Instead of specifying the ''issue'' and the ''fix'' it is possible to use the ''text'' parameter instead. Customised text for the small format can be defined using ''smalltext''. === ''plainlinks'' === Normally on Wikipedia, external links have an arrow icon next to them, like this: [http://www.example.com Example.com]. However, in message boxes, the arrow icon is suppressed by default, like this: <span class="plainlinks">[http://www.example.com Example.com]</span>. To get the normal style of external link with the arrow icon, use {{para|plainlinks|no}}. === ''cat2'', ''cat3'', ''all2'', and ''all3'' === * ''cat2'' and ''cat3'' provide for additional monthly categories; see [[#cat]]. * ''all2'' and ''all3'' provide for additional categories into which all articles are placed, just like [[#all]]. == Technical notes == * If you need to use special characters in the text parameter then you need to escape them like this: <syntaxhighlight lang="xml"> {{mbox |nocat=true | text = <div> Equal sign = and a start and end brace { } work fine as they are. But here is a pipe &#124; and two end braces <nowiki>}}</nowiki>. And now a pipe and end braces <nowiki>|}}</nowiki>. </div> }} </syntaxhighlight> {{mbox |nocat=true | text = <div> Equal sign = and a start and end brace { } work fine as they are. But here is a pipe &#124; and two end braces <nowiki>}}</nowiki>. And now a pipe and end braces <nowiki>|}}</nowiki>. </div> }} * The <code>&lt;div></code> tags that surround the text in the example above are usually not needed. But if the text contains line breaks then sometimes we get weird line spacing. This especially happens when using vertical dotted lists. Then use the div tags to fix that. * The default images for this meta-template are in png format instead of svg format. The main reason is that some older web browsers have trouble with the transparent background that MediaWiki renders for svg images. The png images here have hand optimised transparent background colour so they look good in all browsers. Note that svg icons only look somewhat bad in the old browsers, thus such hand optimisation is only worth the trouble for very widely used icons. == TemplateData == <templatedata> { "params": { "1": {}, "small": { "label": "Small Mode", "description": "The small parameter should be passed through the template, as this will allow editors to use the small format by specifying |small=left on an article.", "type": "string", "suggestedvalues": [ "no", "left" ] }, "talk": {}, "date": {}, "name": { "label": "Template Name", "description": "The name parameter specifies the name of the template, without the Template namespace prefix. ", "type": "string" }, "type": {}, "image": {}, "sect": {}, "issue": {}, "fix": {}, "info": {}, "cat": {}, "all": {}, "imageright": {}, "class": {}, "text ": {}, "plainlinks": {}, "smallimage ": {}, "smallimageright": {}, "textstyle": {}, "style ": {}, "smalltext": {}, "cat2": {}, "cat3": {}, "all2": {}, "all3": {} }, "paramOrder": [ "name", "small", "type", "image", "sect", "issue", "fix", "talk", "date", "1", "info", "cat", "all", "imageright", "class", "text ", "plainlinks", "smallimage ", "smallimageright", "textstyle", "style ", "smalltext", "cat2", "cat3", "all2", "all3" ] } </templatedata> <includeonly>[[Category:Notice templates]]</includeonly> 7b00ac1be5a47eeb858d5ff75f02906ce5d85ff2 Module:Message box/ombox.css 828 232 515 464 2023-01-18T21:47:30Z BEELETH 2 BEELETH changed the content model of the page [[Module:Message box/ombox.css]] from "plain text" to "Sanitized CSS": Necessary for Mbox to function correctly sanitized-css text/css /* {{pp|small=y}} */ .ombox { margin: 4px 0; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } /* For the "small=yes" option. */ .ombox.mbox-small { font-size: 88%; line-height: 1.25em; } .ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .ombox-delete { border: 2px solid #b32424; /* Red */ } .ombox-content { border: 1px solid #f28500; /* Orange */ } .ombox-style { border: 1px solid #fc3; /* Yellow */ } .ombox-move { border: 1px solid #9932cc; /* Purple */ } .ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } .ombox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.9em; width: 100%; } .ombox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.9em; text-align: center; } .ombox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.9em 2px 0; text-align: center; } /* An empty narrow cell */ .ombox .mbox-empty-cell { border: none; padding: 0; width: 1px; } .ombox .mbox-invalid-type { text-align: center; } @media (min-width: 720px) { .ombox { margin: 4px 10%; } .ombox.mbox-small { /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; width: 238px; } } 8fe3df4bb607e699eab2dbd23bd4a1a446391002 Module:Mbox 828 71 518 141 2023-01-19T21:11:47Z BEELETH 2 will it work? lets find out.......... Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Mbox module from the [[w:c:dev:Global Lua Modules]]. local Mbox = require('Module:Mbox2') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Mbox]] -- The imported Module is overwritten locally to include default styling. -- For a more flexible Mbox experience, delete the function below and import -- https://dev.fandom.com/wiki/MediaWiki:Global_Lua_Modules/Mbox.css -- or paste (and modify as you like) its contents in your wiki's -- [[MediaWiki:Wikia.css]] (see [[Help:Including_additional_CSS_and_JS]]) -- or look at https://dev.fandom.com/wiki/Global_Lua_Modules/Mbox -- for more customization inspiration -- -- BEGIN DELETION HERE -- local getArgs = require('Module:Arguments').getArgs local localCSS = mw.loadData('Module:Mbox/data').localStyle function Mbox.main(frame) local args = getArgs(frame) -- styles local styles = {} if args.bordercolor then styles['border-left-color'] = args.bordercolor elseif args.type then styles['border-left-color'] = 'var(--type-' .. args.type .. ')' end if args.bgcolor then styles['background-color'] = args.bgcolor end -- images local image = args.image or '' local imagewidth = args.imagewidth or '80px' local imagelink = '' if args.imagelink then imagelink = '|link=' .. args.imagelink end local imagewikitext = ('%sFile:%s|%s%s' .. ']]'):format('[[', image, imagewidth, imagelink) -- id for closure local id = args.id or 'mbox' local container = mw.html.create('div') :addClass('mbox') :addClass(args.class) :css(styles) :css(localCSS['mbox']) :cssText(args.style) local content = container:tag('div') :addClass('mbox__content') :css(localCSS['mbox__content']) if args.image then local image = content:tag('div') :addClass('mbox__content__image') :addClass('mw-collapsible') :attr('id', 'mw-customcollapsible-' .. id) :css(localCSS['mbox__content__image']) :wikitext(imagewikitext) if args.collapsed then image:addClass('mw-collapsed') end end local contentwrapper = content:tag('div') :addClass('mbox__content__wrapper') :css(localCSS['mbox__content__wrapper']) if args.header then contentwrapper:tag('div') :addClass('mbox__content__header') :css(localCSS['mbox__content__header']) :wikitext(args.header) end if args.text then local text = contentwrapper:tag('div') :addClass('mbox__content__text') :addClass('mw-collapsible') :attr('id', 'mw-customcollapsible-' .. id) :css(localCSS['mbox__content__text']) :wikitext(args.text) if args.collapsed then text:addClass('mw-collapsed') end if args.comment then text:tag('div') :addClass('mbox__content__text__comment') :css(localCSS['mbox__content__text__comment']) :wikitext(args.comment) end end contentwrapper:tag('span') :addClass('mbox__close') :addClass('mw-customtoggle-' .. id) :css(localCSS['mbox__close']) :attr('title', 'Dismiss') if args.aside then local aside = content:tag('div') :addClass('mbox__content__aside') :addClass('mw-collapsible') :attr('id', 'mw-customcollapsible-' .. id) :css(localCSS['mbox__content__aside']) :wikitext(args.aside) if args.collapsed then aside:addClass('mw-collapsed') end end return container end -- -- END DELETION HERE -- -- The last line produces the output for the template return Mbox f007328e6ef6ce20b356f12eaf962e70afdeed50 519 518 2023-01-19T21:46:04Z BEELETH 2 will it work? lets find out.......... Scribunto text/plain require('strict') local getArgs local yesno = require('Module:Yesno') local lang = mw.language.getContentLanguage() local CONFIG_MODULE = 'Module:Message box/configuration' local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if args.demospace and args.demospace ~= '' then -- implement demospace parameter of mbox local demospace = string.lower(args.demospace) if DEMOSPACES[demospace] then -- use template from DEMOSPACES obj.cfg = cfg[DEMOSPACES[demospace]] elseif string.find( demospace, 'talk' ) then -- demo as a talk page obj.cfg = cfg.tmbox else -- default to ombox obj.cfg = cfg.ombox end elseif ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} -- For lazy loading of [[Module:Category handler]]. obj.hasCategories = false return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.hasCategories = true self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image -- Find if the box has been wrongly substituted. self.isSubstituted = cfg.substCheck and args.subst == 'SUBST' -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self.name = args.name if self.name then self:addClass('box-' .. string.gsub(self.name,' ','_')) end if yesno(args.plainlinks) ~= false then self:addClass('plainlinks') end for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText if self.isSmall then local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk) talkText = string.format('([[%s|talk]])', talkLink) else talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date) end self.info = args.info if yesno(args.removalnotice) then self.removalNotice = cfg.removalNotice end end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage or 'Imbox notice.png', imageSize) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end -- set templatestyles self.base_templatestyles = cfg.templatestyles self.templatestyles = args.templatestyles end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) end if self.isSubstituted then self:addCat('all', 'Pages with incorrectly substituted templates') end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() if not self.hasCategories then -- No categories added, no need to pass them to Category handler so, -- if it was invoked, it would return the empty string. -- So we shortcut and return the empty string. return "" end -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return require('Module:Category handler')._main{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Add the subst check error. if self.isSubstituted and self.name then root:tag('b') :addClass('error') :wikitext(string.format( 'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.', mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}') )) end local frame = mw.getCurrentFrame() root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.base_templatestyles }, }) -- Add support for a single custom templatestyles sheet. Undocumented as -- need should be limited and many templates using mbox are substed; we -- don't want to spread templatestyles sheets around to arbitrary places if self.templatestyles then root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.templatestyles }, }) end -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellDiv = textCell:tag('div') textCellDiv :addClass('mbox-text-span') :wikitext(self.issue or nil) if (self.talk or self.fix) then textCellDiv:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellDiv:wikitext(self.date and (' ' .. self.date) or nil) if self.info and not self.isSmall then textCellDiv :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end if self.removalNotice then textCellDiv:tag('span') :addClass('hide-when-compact') :tag('i') :wikitext(string.format(" (%s)", self.removalNotice)) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :addClass('mbox-invalid-type') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p, mt = {}, {} function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE)) box:setParameters() box:setCategories() return box:export() end function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) bdb0ecc9f26f26b9c0ce12a066a183ac9d4f0705 Vast Space 0 247 520 496 2023-01-19T21:47:28Z BEELETH 2 idk wikitext text/x-wiki {{Infobox|above=Vast Space|header1=Creation and development|label2=Development|label3=Creator(s)|data2=Unknown|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Beelethverse * The Multiverse * Everything|label6=Guardian(s)|data6=* [[Origin]] (creator/deity) * [[Cosmic Warden]] (protector)|label7=Sub-Spaces, universes, and timelines|data7=* [[Abstract Space]] * [[Sender Space]] * [[Uncharted Space]] * [[Anomaly Space]] * [[World's End Timeline]] * Several smaller, obscure Spaces}} '''Vast Space''' (also occasionally called the '''Beelethverse''' outside of canon materials) is the place in which all canon or theoretical events occur in [[BEELETH]]'s shared character multiverse. It is overseen by [[Origin]] and at least one [[Cosmic Warden]]; this [[Space]] is split into several smaller Spaces with their own [[deities]], sub-properties, and/or sub-laws. == Creation and development == The Vast Space has existed for as long as the character universe had been split into smaller Spaces, but was not given a name nor recognized for several years. == In-universe history == It is uncertain when the Vast Space was created, but for as long as it has existed, Origin has protected it. == Spatial characteristics == As do all Spaces, Vast Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Vast Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present. === Traits === # Not all of the Vast Space's sub-Spaces need to be created by a deity or an event; some are just naturally created. # Most Spaces and their contained universes have preset outcomes ("timelines"), but if they do not, it is likely the result of a [[spatial anomaly]] of some sort. #* [[World's End Timeline]] is a "Schrodinger's timeline" where [[Sir Ves]]' [[parasite]] gains the means to rewrite the entirety of Vast Space into a single, ruined version that combines a handful of Space elements that survive the event. #* Galfleet Heaven was originally intended to have two outcomes as a result of Volta, who was created as an angel-like villain at the time rather than as a soul-based entity as it exists in the Uncharted Space. # Spaces and their contained universes tend to constantly be occurring in the past, present, and future; they are endlessly "playing", "rewinding", and are also "paused". Time exists incomprehensibly across them and happens at what feels like its own convenience. # Most Spaces and their contained universes are unable to communicate across one another, but there have been exceptions resulting from spatial anomalies or certain natural conditions. # Humans usually exist at some point in each universe, but this is not always the case. === Laws === # Nothing is allowed to exist beyond Vast Space unless it is even more incomprehensibly vast or powerful. This is almost certainly impossible. #* Semi-canon crossovers are permitted if the other universe(s) are explained as being obscure, alternate timelines that diverge at the very beginning of the Vast Space's existence. # All worlds contained in the Vast Space must have the [[Great Gobbler]] and his most notable historical event present in some way. #* He does not have to be human. # The [[Auophian pantheon]], best described as the descendants of Origin, naturally have higher precedence over most other deities. #* Amongst themselves, Origin is the highest-ranked deity, with Abstract second to him. The rest of the pantheon is ranked below Abstract and are equal to one another unless they are demigods, in which they are ranked below them but above average people. #* Abstract is the highest-ranked deity of a sub-Space. The rest of the pantheon are the highest-ranked deities within any universe. # Logical/literal memories are stored in minds, and emotional/implied memories are stored in souls. Logical people have stronger minds, and emotional people have stronger souls. # Living things, regardless of whether they are organic or artificial, normally have minds. Souls, on the other hand, only naturally occur in organic living things. # Loose souls will usually gravitate towards empty or partial vessels, or they will gravitate towards more powerful souls in order to fuse with them. In the event a soul fuses, == Trivia == * The Vast Space is the only deity-protected Space whose name does not reflect that of its associated deity. == Related pages == TBA 9df323fa297c30fde9cf085c0e38fc53b45c7f87 Vast space 0 260 521 2023-01-19T21:47:57Z BEELETH 2 created redirect wikitext text/x-wiki #REDIRECT [[Vast Space]] fad6b2cbf5f20171530745640e4ec3dd76402cac Space 0 261 522 2023-01-19T21:48:13Z BEELETH 2 Added redirect wikitext text/x-wiki #REDIRECT [[Spaces]] a3d0dafa5f46f329dfd1c7601a6192b1dc668d16 Module:Message box/ambox.css 828 262 523 2023-01-19T21:50:00Z BEELETH 2 will it work? lets find out.......... sanitized-css text/css /* {{pp|small=y}} */ .ambox { border: 1px solid #a2a9b1; /* @noflip */ border-left: 10px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } /* Single border between stacked boxes. Take into account base templatestyles, * user styles, and Template:Dated maintenance category. * remove link selector when T200206 is fixed */ .ambox + link + .ambox, .ambox + link + style + .ambox, .ambox + link + link + .ambox, /* TODO: raise these as "is this really that necessary???". the change was Dec 2021 */ .ambox + .mw-empty-elt + link + .ambox, .ambox + .mw-empty-elt + link + style + .ambox, .ambox + .mw-empty-elt + link + link + .ambox { margin-top: -1px; } /* For the "small=left" option. */ /* must override .ambox + .ambox styles above */ html body.mediawiki .ambox.mbox-small-left { /* @noflip */ margin: 4px 1em 4px 0; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } .ambox-speedy { /* @noflip */ border-left: 10px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .ambox-delete { /* @noflip */ border-left: 10px solid #b32424; /* Red */ } .ambox-content { /* @noflip */ border-left: 10px solid #f28500; /* Orange */ } .ambox-style { /* @noflip */ border-left: 10px solid #fc3; /* Yellow */ } .ambox-move { /* @noflip */ border-left: 10px solid #9932cc; /* Purple */ } .ambox-protection { /* @noflip */ border-left: 10px solid #a2a9b1; /* Gray-gold */ } .ambox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.5em; width: 100%; } .ambox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.5em; text-align: center; } .ambox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.5em 2px 0; text-align: center; } /* An empty narrow cell */ .ambox .mbox-empty-cell { border: none; padding: 0; width: 1px; } .ambox .mbox-image-div { width: 52px; } /* Hack around MobileFrontend being opinionated */ html.client-js body.skin-minerva .mbox-text-span { margin-left: 23px !important; } @media (min-width: 720px) { .ambox { margin: 0 10%; /* 10% = Will not overlap with other elements */ } } 29898fdc5160b39a8f580c76efe77afa1f6f58a4 Module:Category handler 828 263 524 2023-01-19T22:07:05Z BEELETH 2 will it work? lets find out.......... Scribunto text/plain -------------------------------------------------------------------------------- -- -- -- CATEGORY HANDLER -- -- -- -- This module implements the {{category handler}} template in Lua, -- -- with a few improvements: all namespaces and all namespace aliases -- -- are supported, and namespace names are detected automatically for -- -- the local wiki. This module requires [[Module:Namespace detect]] -- -- and [[Module:Yesno]] to be available on the local wiki. It can be -- -- configured for different wikis by altering the values in -- -- [[Module:Category handler/config]], and pages can be blacklisted -- -- from categorisation by using [[Module:Category handler/blacklist]]. -- -- -- -------------------------------------------------------------------------------- -- Load required modules local yesno = require('Module:Yesno') -- Lazily load things we don't always need local mShared, mappings local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function trimWhitespace(s, removeBlanks) if type(s) ~= 'string' then return s end s = s:match('^%s*(.-)%s*$') if removeBlanks then if s ~= '' then return s else return nil end else return s end end -------------------------------------------------------------------------------- -- CategoryHandler class -------------------------------------------------------------------------------- local CategoryHandler = {} CategoryHandler.__index = CategoryHandler function CategoryHandler.new(data, args) local obj = setmetatable({ _data = data, _args = args }, CategoryHandler) -- Set the title object do local pagename = obj:parameter('demopage') local success, titleObj if pagename then success, titleObj = pcall(mw.title.new, pagename) end if success and titleObj then obj.title = titleObj if titleObj == mw.title.getCurrentTitle() then obj._usesCurrentTitle = true end else obj.title = mw.title.getCurrentTitle() obj._usesCurrentTitle = true end end -- Set suppression parameter values for _, key in ipairs{'nocat', 'categories'} do local value = obj:parameter(key) value = trimWhitespace(value, true) obj['_' .. key] = yesno(value) end do local subpage = obj:parameter('subpage') local category2 = obj:parameter('category2') if type(subpage) == 'string' then subpage = mw.ustring.lower(subpage) end if type(category2) == 'string' then subpage = mw.ustring.lower(category2) end obj._subpage = trimWhitespace(subpage, true) obj._category2 = trimWhitespace(category2) -- don't remove blank values end return obj end function CategoryHandler:parameter(key) local parameterNames = self._data.parameters[key] local pntype = type(parameterNames) if pntype == 'string' or pntype == 'number' then return self._args[parameterNames] elseif pntype == 'table' then for _, name in ipairs(parameterNames) do local value = self._args[name] if value ~= nil then return value end end return nil else error(string.format( 'invalid config key "%s"', tostring(key) ), 2) end end function CategoryHandler:isSuppressedByArguments() return -- See if a category suppression argument has been set. self._nocat == true or self._categories == false or ( self._category2 and self._category2 ~= self._data.category2Yes and self._category2 ~= self._data.category2Negative ) -- Check whether we are on a subpage, and see if categories are -- suppressed based on our subpage status. or self._subpage == self._data.subpageNo and self.title.isSubpage or self._subpage == self._data.subpageOnly and not self.title.isSubpage end function CategoryHandler:shouldSkipBlacklistCheck() -- Check whether the category suppression arguments indicate we -- should skip the blacklist check. return self._nocat == false or self._categories == true or self._category2 == self._data.category2Yes end function CategoryHandler:matchesBlacklist() if self._usesCurrentTitle then return self._data.currentTitleMatchesBlacklist else mShared = mShared or require('Module:Category handler/shared') return mShared.matchesBlacklist( self.title.prefixedText, mw.loadData('Module:Category handler/blacklist') ) end end function CategoryHandler:isSuppressed() -- Find if categories are suppressed by either the arguments or by -- matching the blacklist. return self:isSuppressedByArguments() or not self:shouldSkipBlacklistCheck() and self:matchesBlacklist() end function CategoryHandler:getNamespaceParameters() if self._usesCurrentTitle then return self._data.currentTitleNamespaceParameters else if not mappings then mShared = mShared or require('Module:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end return mShared.getNamespaceParameters( self.title, mappings ) end end function CategoryHandler:namespaceParametersExist() -- Find whether any namespace parameters have been specified. -- We use the order "all" --> namespace params --> "other" as this is what -- the old template did. if self:parameter('all') then return true end if not mappings then mShared = mShared or require('Module:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end for ns, params in pairs(mappings) do for i, param in ipairs(params) do if self._args[param] then return true end end end if self:parameter('other') then return true end return false end function CategoryHandler:getCategories() local params = self:getNamespaceParameters() local nsCategory for i, param in ipairs(params) do local value = self._args[param] if value ~= nil then nsCategory = value break end end if nsCategory ~= nil or self:namespaceParametersExist() then -- Namespace parameters exist - advanced usage. if nsCategory == nil then nsCategory = self:parameter('other') end local ret = {self:parameter('all')} local numParam = tonumber(nsCategory) if numParam and numParam >= 1 and math.floor(numParam) == numParam then -- nsCategory is an integer ret[#ret + 1] = self._args[numParam] else ret[#ret + 1] = nsCategory end if #ret < 1 then return nil else return table.concat(ret) end elseif self._data.defaultNamespaces[self.title.namespace] then -- Namespace parameters don't exist, simple usage. return self._args[1] end return nil end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p = {} function p._exportClasses() -- Used for testing purposes. return { CategoryHandler = CategoryHandler } end function p._main(args, data) data = data or mw.loadData('Module:Category handler/data') local handler = CategoryHandler.new(data, args) if handler:isSuppressed() then return nil end return handler:getCategories() end function p.main(frame, data) data = data or mw.loadData('Module:Category handler/data') local args = require('Module:Arguments').getArgs(frame, { wrappers = data.wrappers, valueFunc = function (k, v) v = trimWhitespace(v) if type(k) == 'number' then if v ~= '' then return v else return nil end else return v end end }) return p._main(args, data) end return p b74dd63857b24904ac452429b11213f18647471f Module:Category handler/data 828 264 525 2023-01-19T22:07:57Z BEELETH 2 will it work? lets find out.......... Scribunto text/plain -- This module assembles data to be passed to [[Module:Category handler]] using -- mw.loadData. This includes the configuration data and whether the current -- page matches the title blacklist. local data = require('Module:Category handler/config') local mShared = require('Module:Category handler/shared') local blacklist = require('Module:Category handler/blacklist') local title = mw.title.getCurrentTitle() data.currentTitleMatchesBlacklist = mShared.matchesBlacklist( title.prefixedText, blacklist ) data.currentTitleNamespaceParameters = mShared.getNamespaceParameters( title, mShared.getParamMappings() ) return data abbc68048ff698e88dda06b64ecf384bbf583120 Non-canon 0 265 528 2023-01-19T22:09:32Z BEELETH 2 redirect wikitext text/x-wiki #REDIRECT [[:Category:Non-canon]] c02a30ef40b2d3aa304fafe2eae60634c7637059 Module:Category handler/config 828 266 529 2023-01-19T22:12:11Z BEELETH 2 will it work? lets find out.......... Scribunto text/plain -------------------------------------------------------------------------------- -- [[Module:Category handler]] configuration data -- -- Language-specific parameter names and values can be set here. -- -- For blacklist config, see [[Module:Category handler/blacklist]]. -- -------------------------------------------------------------------------------- local cfg = {} -- Don't edit this line. -------------------------------------------------------------------------------- -- Start configuration data -- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -- Parameter names -- -- These configuration items specify custom parameter names. -- -- To add one extra name, you can use this format: -- -- -- -- foo = 'parameter name', -- -- -- -- To add multiple names, you can use this format: -- -- -- -- foo = {'parameter name 1', 'parameter name 2', 'parameter name 3'}, -- -------------------------------------------------------------------------------- cfg.parameters = { -- The nocat and categories parameter suppress -- categorisation. They are used with Module:Yesno, and work as follows: -- -- cfg.nocat: -- Result of yesno() Effect -- true Categorisation is suppressed -- false Categorisation is allowed, and -- the blacklist check is skipped -- nil Categorisation is allowed -- -- cfg.categories: -- Result of yesno() Effect -- true Categorisation is allowed, and -- the blacklist check is skipped -- false Categorisation is suppressed -- nil Categorisation is allowed nocat = 'nocat', categories = 'categories', -- The parameter name for the legacy "category2" parameter. This skips the -- blacklist if set to the cfg.category2Yes value, and suppresses -- categorisation if present but equal to anything other than -- cfg.category2Yes or cfg.category2Negative. category2 = 'category2', -- cfg.subpage is the parameter name to specify how to behave on subpages. subpage = 'subpage', -- The parameter for data to return in all namespaces. all = 'all', -- The parameter name for data to return if no data is specified for the -- namespace that is detected. other = 'other', -- The parameter name used to specify a page other than the current page; -- used for testing and demonstration. demopage = 'page', } -------------------------------------------------------------------------------- -- Parameter values -- -- These are set values that can be used with certain parameters. Only one -- -- value can be specified, like this: -- -- -- -- cfg.foo = 'value name' -- -- -------------------------------------------------------------------------------- -- The following settings are used with the cfg.category2 parameter. Setting -- cfg.category2 to cfg.category2Yes skips the blacklist, and if cfg.category2 -- is present but equal to anything other than cfg.category2Yes or -- cfg.category2Negative then it supresses cateogrisation. cfg.category2Yes = 'yes' cfg.category2Negative = '¬' -- The following settings are used with the cfg.subpage parameter. -- cfg.subpageNo is the value to specify to not categorise on subpages; -- cfg.subpageOnly is the value to specify to only categorise on subpages. cfg.subpageNo = 'no' cfg.subpageOnly = 'only' -------------------------------------------------------------------------------- -- Default namespaces -- -- This is a table of namespaces to categorise by default. The keys are the -- -- namespace numbers. -- -------------------------------------------------------------------------------- cfg.defaultNamespaces = { [ 0] = true, -- main [ 6] = true, -- file [ 12] = true, -- help [ 14] = true, -- category [100] = true, -- portal [108] = true, -- book } -------------------------------------------------------------------------------- -- Wrappers -- -- This is a wrapper template or a list of wrapper templates to be passed to -- -- [[Module:Arguments]]. -- -------------------------------------------------------------------------------- cfg.wrappers = 'Template:Category handler' -------------------------------------------------------------------------------- -- End configuration data -- -------------------------------------------------------------------------------- return cfg -- Don't edit this line. 373cd107b13a5b00e6a1b7e66a749f12502c849d Module:Category handler/shared 828 267 530 2023-01-19T22:12:54Z BEELETH 2 will it work? lets find out.......... Scribunto text/plain -- This module contains shared functions used by [[Module:Category handler]] -- and its submodules. local p = {} function p.matchesBlacklist(page, blacklist) for i, pattern in ipairs(blacklist) do local match = mw.ustring.match(page, pattern) if match then return true end end return false end function p.getParamMappings(useLoadData) local dataPage = 'Module:Namespace detect/data' if useLoadData then return mw.loadData(dataPage).mappings else return require(dataPage).mappings end end function p.getNamespaceParameters(titleObj, mappings) -- We don't use title.nsText for the namespace name because it adds -- underscores. local mappingsKey if titleObj.isTalkPage then mappingsKey = 'talk' else mappingsKey = mw.site.namespaces[titleObj.namespace].name end mappingsKey = mw.ustring.lower(mappingsKey) return mappings[mappingsKey] or {} end return p d2d5de1a031e6ce97c242cbfa8afe7a92cb9eca5 Module:Category handler/blacklist 828 268 532 2023-01-19T22:14:01Z BEELETH 2 will it work? lets find out.......... Scribunto text/plain -- This module contains the blacklist used by [[Module:Category handler]]. -- Pages that match Lua patterns in this list will not be categorised unless -- categorisation is explicitly requested. return { '^Main Page$', -- don't categorise the main page. -- Don't categorise the following pages or their subpages. -- "%f[/\0]" matches if the next character is "/" or the end of the string. '^Wikipedia:Cascade%-protected items%f[/\0]', '^User:UBX%f[/\0]', -- The userbox "template" space. '^User talk:UBX%f[/\0]', -- Don't categorise subpages of these pages, but allow -- categorisation of the base page. '^Wikipedia:Template index/.*$', -- Don't categorise archives. '/[aA]rchive', "^Wikipedia:Administrators' noticeboard/IncidentArchive%d+$", } 87469d7a9ef2a3c41b2bf04ae18f7c59a18fb855 BEELETH Wiki 0 2 534 3 2023-01-19T23:34:53Z BEELETH 2 Reformatted page wikitext text/x-wiki <div style="text-align: center; font-size: x-large; padding: 1em;">'''{{SITENAME}}'''</div> {| style="width: 100% !important;" |- | style="border-top: 4px solid #6F6F6F; background-color: #F6F6F6; padding: 10px 15px;" | <div style="font-size:180%;">Welcome, traveller, to the Vast Space Archives...</div> |} {| style="width: 100%;" | style="border-top: 4px solid #67540F; background-color: #FFFDF5; padding: 5px 15px 10px 15px; vertical-align:top;" |<h3> About this wiki</h3> * This is the official public wiki for [[BEELETH]]'s shared character multiverse. * All visitors are welcome to contribute as long as it is done in good faith. * We've moved over from Fandom somewhat recently, so sorry for the mess! Feel free to help us make our pages readable, fix our templates/modules, or anything else. * For more information, see our [[VAST SPACE ARCHIVES: Beeleth Wiki:About|"about" page]]. * Work in progress. | rowspan="3" style="width:10px" | | rowspan="3" style="border-top: 4px solid #180F67; background-color: #F7F6FF; padding: 5px 15px 10px 15px; width:30%; vertical-align:top;" |<h3><translate><!--T:14--> News</translate></h3> *<translate><!--T:60--> July 2022: [[<tvar name=miraheze7year>Special:MyLanguage/Miraheze-7-year</tvar>|Miraheze celebrates its 7 year anniversary]]!</translate> *<translate><!--T:51--> June 2022: Miraheze upgraded to MediaWiki 1.38!</translate> *<translate><!--T:59--> January 2022: Miraheze deployed its [https://blog.miraheze.org/post/17/introducing_scsvg/ <tvar name=jan2022>'''own physical hardware''' with a UK-based colocation data centre service provider </tvar>]</translate> <translate> <!--T:56--> ''For archived news please see the [[<tvar name=newsarchive>Miraheze/News Archive</tvar>|news archive]].'' </translate> |} {| | style="border-top: 4px solid #2C670F; background-color: #F8FFF5; padding: 5px 15px 10px 15px; vertical-align:top" |<h3><translate><!--T:16--> Contact us</translate></h3> *<translate><!--T:17--> IRC: [[<tvar name=irc>Special:MyLanguage/IRC</tvar>|#miraheze]] (recommended)</translate> *<translate><!--T:44--> Discord: https://miraheze.org/discord (recommended)</translate> *<translate><!--T:32--> Facebook: [<tvar name=fb>https://www.facebook.com/pages/Miraheze/1641434862735427</tvar> Miraheze]</translate> *<translate><!--T:34--> Twitter: [<tvar name=twtr>//twitter.com/miraheze</tvar> @miraheze]</translate> *<translate><!--T:61--> Mastodon: [<tvar name=mast>https://mastodon.social/@miraheze</tvar> @miraheze]</translate> *<translate><!--T:35--> On-wiki: [[<tvar name=hc>Special:MyLanguage/Help center</tvar>|Help center]]</translate> | rowspan="3" style="width:10px" | | rowspan="3" style="border-top: 4px solid #67440F; background-color: #FFF2F6; padding: 5px 15px 10px 15px; width:30%; vertical-align:top;" |<h3><translate><!--T:27--> Contribute</translate></h3><translate><!--T:24--> Miraheze is entirely community-supported and has no advertising. We appreciate contributions of time, money, or expertise.</translate> *<translate><!--T:25--> [[<tvar name=contributing>Special:MyLanguage/Contributing</tvar>|Contributing]]; learn how you can use your knowledge and time to help us.</translate> *<translate><!--T:26--> [[<tvar name=donate>Special:MyLanguage/Donate</tvar>|Donate]]; a record of previous donations and costs are available [[<tvar name=fin>Special:MyLanguage/Finance</tvar>|here]].</translate> |} [[Category:{{SITENAME}}]] __NOTOC__ fee5264c3b4075a0ac7167372d442f6faa1ee940 File:Beelethcreatura.png 6 269 535 2023-01-20T21:43:01Z BEELETH 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 BEELETH 0 149 536 299 2023-01-20T21:59:19Z BEELETH 2 Fixed page wikitext text/x-wiki {{Infobox|above=BEELETH|data5=Autosexual, aromantic, polyamorous|data8=TBA|data7=TBA|label9=Offsite links|label8=Playlist|label7=Theme song|header6=Extra information|caption=Self-portrait|label5=Orientation|image=[[File:Beelethcreatura.png|200px|High-quality, astounding artistic rendition of BEELETH]]|data4=* they/them * he/him * it/its * no pronouns|label4=Pronouns|data3=Epicene, intersex, femboy, bear, androgyne|label3=Genders and labels|data2=* BEELETH (BEEL) * HALBERD (AL, HAL, HALB, HALBY, etc.) * URINALBEAST (YUUBI)|label2=Other names|header1=About this person|data9=TBA}}{{Mbox|text=This [[non-canon]] page of a [[real person]] exists on the wiki because this person is a community member, content creator, and/or important person in the [[Vast Space]]'s real-world community. Please be respectful when editing this page.|name=realperson}} '''BEELETH''' (also called '''BEEL''', '''HALBERD''', and '''YUUBI''' among many other names) is the real-world creator of the Vast Space, and is the main contributor to its lore and canon. They are also the creator of this wiki, and their user page can be accessed [[User:BEELETH|here]]. Their name is not always required to be written in all-capital letters, but it is preferred whenever possible or convenient. Though they use multiple sets of pronouns, this article exclusively refers to them with they/them for consistency. == Contributions to Vast Space == === General categories === * [[:Category:Created by BEELETH|Category:Created by BEELETH]] * Category:Designed by BEELETH === Specific === * Creator of the [[Vast Space]] and most canon media set within it ** Founder and bureaucrat of the Vast Space Wiki == Links == These pages are able to be used to find more first-hand information about BEELETH as well as their characters. * [https://beeleth.carrd.co/ Carrd] *[https://discord.gg/r9ZwNhV4rx Discord] * [https://www.roblox.com/users/30627566/profile Roblox] * [https://toyhou.se/BEELETH Toyhouse] * [https://twitter.com/itsbeeleth Twitter] == Related pages == * [[Beeleth]], a character who shares BEELETH's name and serves as a sona on occasion * [[Halberd]], an idealized representation of BEEL's future self * [[C.C.]], a character who BEEL once shared a name with [[Category:Real]] [[Category:Real people]] [[Category:Contributors]] 3f557aef3b0cc6999772a682d84e2dfebc8a04e8 541 536 2023-01-20T22:06:47Z BEELETH 2 Fixed broken link wikitext text/x-wiki {{Infobox|above=BEELETH|data5=Autosexual, aromantic, polyamorous|data8=TBA|data7=TBA|label9=Offsite links|label8=Playlist|label7=Theme song|header6=Extra information|caption=Self-portrait|label5=Orientation|image=[[File:Beelethcreatura.png|200px|High-quality, astounding artistic rendition of BEELETH]]|data4=* they/them * he/him * it/its * no pronouns|label4=Pronouns|data3=Epicene, intersex, femboy, bear, androgyne|label3=Genders and labels|data2=* BEELETH (BEEL) * HALBERD (AL, HAL, HALB, HALBY, etc.) * URINALBEAST (YUUBI)|label2=Other names|header1=About this person|data9=TBA}}{{Mbox|text=This [[non-canon]] page of a [[real person]] exists on the wiki because this person is a community member, content creator, and/or important person in the [[Vast Space]]'s real-world community. Please be respectful when editing this page.|name=realperson}} '''BEELETH''' (also called '''BEEL''', '''HALBERD''', and '''YUUBI''' among many other names) is the real-world creator of the Vast Space, and is the main contributor to its lore and canon. They are also the creator of this wiki, and their user page can be accessed [[User:BEELETH|here]]. Their name is not always required to be written in all-capital letters, but it is preferred whenever possible or convenient. Though they use multiple sets of pronouns, this article exclusively refers to them with they/them for consistency. == Contributions to Vast Space == === General categories === * [[:Category:Created by BEELETH|Category:Created by BEELETH]] * [[:Category:Designed by BEELETH|Category:Designed by BEELETH]] === Specific === * Creator of the [[Vast Space]] and most canon media set within it ** Founder and bureaucrat of the Vast Space Wiki == Links == These pages are able to be used to find more first-hand information about BEELETH as well as their characters. * [https://beeleth.carrd.co/ Carrd] *[https://discord.gg/r9ZwNhV4rx Discord] * [https://www.roblox.com/users/30627566/profile Roblox] * [https://toyhou.se/BEELETH Toyhouse] * [https://twitter.com/itsbeeleth Twitter] == Related pages == * [[Beeleth]], a character who shares BEELETH's name and serves as a sona on occasion * [[Halberd]], an idealized representation of BEEL's future self * [[C.C.]], a character who BEEL once shared a name with [[Category:Real]] [[Category:Real people]] [[Category:Contributors]] c348a8cdc3984313c7b3db42bcafe5d2b2c89fe6 Real person 0 270 537 2023-01-20T21:59:56Z BEELETH 2 Created redirect wikitext text/x-wiki #REDIRECT [[:Category:Real people]] eb6176bf6956c02dcfae88cba05f99fca2cf036a Real people 0 271 538 2023-01-20T22:00:21Z BEELETH 2 Created redirect wikitext text/x-wiki #REDIRECT [[:Category:Real people]] eb6176bf6956c02dcfae88cba05f99fca2cf036a Category:Real people 14 272 539 2023-01-20T22:02:35Z BEELETH 2 Created page wikitext text/x-wiki People who exist in the real world can have articles about themselves on this wiki if they are a community member, content creator, and/or important person in the [[Vast Space]]'s real-world community. Most pages about a person should only be created by them or should be made with their permission and input. [[Category:Real]] c06a92c39926c444848eaff78f4710ff268436a6 Category:Real 14 273 540 2023-01-20T22:05:05Z BEELETH 2 Created page wikitext text/x-wiki Articles within this category cover subjects or topics that predominantly or completely exist in the real world, such as [[real locations]] or [[real people]]. Pages about real things or people should be kept to a minimum as most [[Vast Space]]-related content is purely fictional, but pages can still be created if there is reason warranting them to exist, such as documenting certain events or describing contributors to the stories described here. ce300b94fa0c4bf38a30ac971b0ff19c82392347 Halberd 0 274 542 2023-01-20T22:09:19Z BEELETH 2 Created redirect wikitext text/x-wiki #REDIRECT [[Halberd (character)]] 5e902739d24145f68919d8abf3e238aeeddd2b5f Halberd (disambiguation) 0 275 543 2023-01-20T22:10:38Z BEELETH 2 Created disambiguation page wikitext text/x-wiki Halberd may refer to: * [[BEELETH]] * [[Halberd (character)]], one of BEELETH's sonas [[Category:Disambiguation pages]] a7bfb69e5bd2569dc7106ee39718f721a6a2d939 Template:Distinguish/doc 10 276 544 2023-01-20T22:14:38Z BEELETH 2 HELP wikitext text/x-wiki {{Documentation subpage}} <!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE --> This template renders a [[w:WP:HAT|hatnote]] intended to inform the reader of the existence of one or more pages whose title(s) bears a strong resemblance to the current article. == Examples == This hatnote is generally used when readers have misspelled their desired title, and the error would be apparent by simply displaying the alternative term without further explanation. For example, consider a reader looking for the punctuation mark who instead ends up at [[coma]]: <blockquote>[[Coma]] → {{Distinguish|Comma}}</blockquote> Readers are presumed to recognize that they actually wanted ''comma'' by merely looking at the spelling, and this case generally requires no further explanation. == TemplateData == <templatedata> { "params": { "1": { "label": "Name of article", "description": "Name of article that you want to link to", "type": "wiki-page-name", "required": true }, "2": { "label": "Optional additional article to link", "description": "Optional additional article to link", "type": "wiki-page-name" }, "3": { "label": "Optional additional article to link", "description": "Optional additional article to link", "type": "wiki-page-name" }, "4": { "label": "Optional additional article to link", "description": "Optional additional article to link", "type": "wiki-page-name" } }, "description": "A hatnote used when there is an ambiguity in an article's title.", "paramOrder": [ "1", "2", "3", "4" ], "format": "inline" } </templatedata> f1b9d718a1a4791ff7277893be40f0b183e23917 Template:Distinguish 10 190 545 376 2023-01-20T22:15:39Z BEELETH 2 HELP wikitext text/x-wiki {{#if:{{{1|}}} |{{hatnote|Not to be confused with [[:{{trim|{{{1}}}}}]]{{ #if: {{{3|}}}{{{4|}}} | , [[:{{trim|{{{2}}}}}]], {{ #if: {{{4|}}} | [[:{{trim|{{{3}}}}}]], or [[:{{trim|{{{4}}}}}]] | or [[:{{trim|{{{3}}}}}]] }} | {{ #if: {{{2|}}} | &nbsp;or [[:{{trim|{{{2}}}}}]] }} }}.}} }}<noinclude><!-- splitting these lines causes {{Documentation}} template to terminate green shading when Distinguish is used in /doc pages. --> {{Documentation}} <!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! --> {{En-WP attribution notice|Template:Distinguish }} </noinclude> 1064497f2985df64cf7d5ccf27aae51ee5a1386d Module:Documentation/config 828 213 546 426 2023-01-20T22:19:55Z BEELETH 2 HELP Scribunto text/plain ---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------------------------- local cfg = {} -- Do not edit this line. ---------------------------------------------------------------------------------------------------- -- Start box configuration ---------------------------------------------------------------------------------------------------- -- cfg['documentation-icon-wikitext'] -- The wikitext for the icon shown at the top of the template. cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- cfg['template-namespace-heading'] -- The heading shown in the template namespace. cfg['template-namespace-heading'] = 'Template documentation' -- cfg['module-namespace-heading'] -- The heading shown in the module namespace. cfg['module-namespace-heading'] = 'Module documentation' -- cfg['file-namespace-heading'] -- The heading shown in the file namespace. cfg['file-namespace-heading'] = 'Summary' -- cfg['other-namespaces-heading'] -- The heading shown in other namespaces. cfg['other-namespaces-heading'] = 'Documentation' -- cfg['view-link-display'] -- The text to display for "view" links. cfg['view-link-display'] = 'view' -- cfg['edit-link-display'] -- The text to display for "edit" links. cfg['edit-link-display'] = 'edit' -- cfg['history-link-display'] -- The text to display for "history" links. cfg['history-link-display'] = 'history' -- cfg['purge-link-display'] -- The text to display for "purge" links. cfg['purge-link-display'] = 'purge' -- cfg['create-link-display'] -- The text to display for "create" links. cfg['create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Link box (end box) configuration ---------------------------------------------------------------------------------------------------- -- cfg['transcluded-from-blurb'] -- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page. cfg['transcluded-from-blurb'] = 'The above [[w:Wikipedia:Template documentation|documentation]] is [[mw:Help:Transclusion|transcluded]] from $1.' --[[ -- cfg['create-module-doc-blurb'] -- Notice displayed in the module namespace when the documentation subpage does not exist. -- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the -- display cfg['create-link-display']. --]] cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[mw:Extension:Scribunto/Lua reference manual|Scribunto module]].' ---------------------------------------------------------------------------------------------------- -- Experiment blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['experiment-blurb-template'] -- cfg['experiment-blurb-module'] -- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages. -- It is only shown in the template and module namespaces. With the default English settings, it -- might look like this: -- -- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages. -- -- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links. -- -- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending -- on what namespace we are in. -- -- Parameters: -- -- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display']) -- -- If the sandbox doesn't exist, it is in the format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display']) -- -- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload'] -- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display'] -- loads a default edit summary of cfg['mirror-edit-summary']. -- -- $2 is a link to the test cases page. If the test cases page exists, it is in the following format: -- -- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display']) -- -- If the test cases page doesn't exist, it is in the format: -- -- cfg['testcases-link-display'] (cfg['testcases-create-link-display']) -- -- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the -- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current -- namespace. --]] cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages." cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages." ---------------------------------------------------------------------------------------------------- -- Sandbox link configuration ---------------------------------------------------------------------------------------------------- -- cfg['sandbox-subpage'] -- The name of the template subpage typically used for sandboxes. cfg['sandbox-subpage'] = 'sandbox' -- cfg['template-sandbox-preload'] -- Preload file for template sandbox pages. cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox' -- cfg['module-sandbox-preload'] -- Preload file for Lua module sandbox pages. cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox' -- cfg['sandbox-link-display'] -- The text to display for "sandbox" links. cfg['sandbox-link-display'] = 'sandbox' -- cfg['sandbox-edit-link-display'] -- The text to display for sandbox "edit" links. cfg['sandbox-edit-link-display'] = 'edit' -- cfg['sandbox-create-link-display'] -- The text to display for sandbox "create" links. cfg['sandbox-create-link-display'] = 'create' -- cfg['compare-link-display'] -- The text to display for "compare" links. cfg['compare-link-display'] = 'diff' -- cfg['mirror-edit-summary'] -- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the -- template page. cfg['mirror-edit-summary'] = 'Create sandbox version of $1' -- cfg['mirror-link-display'] -- The text to display for "mirror" links. cfg['mirror-link-display'] = 'mirror' -- cfg['mirror-link-preload'] -- The page to preload when a user clicks the "mirror" link. cfg['mirror-link-preload'] = 'Template:Documentation/mirror' ---------------------------------------------------------------------------------------------------- -- Test cases link configuration ---------------------------------------------------------------------------------------------------- -- cfg['testcases-subpage'] -- The name of the template subpage typically used for test cases. cfg['testcases-subpage'] = 'testcases' -- cfg['template-testcases-preload'] -- Preload file for template test cases pages. cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases' -- cfg['module-testcases-preload'] -- Preload file for Lua module test cases pages. cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases' -- cfg['testcases-link-display'] -- The text to display for "testcases" links. cfg['testcases-link-display'] = 'testcases' -- cfg['testcases-edit-link-display'] -- The text to display for test cases "edit" links. cfg['testcases-edit-link-display'] = 'edit' -- cfg['testcases-run-link-display'] -- The text to display for test cases "run" links. cfg['testcases-run-link-display'] = 'run' -- cfg['testcases-create-link-display'] -- The text to display for test cases "create" links. cfg['testcases-create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Add categories blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['add-categories-blurb'] -- Text to direct users to add categories to the /doc subpage. Not used if the "content" or -- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a -- link to the /doc subpage with a display value of cfg['doc-link-display']. --]] cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.' -- cfg['doc-link-display'] -- The text to display when linking to the /doc subpage. cfg['doc-link-display'] = '/doc' ---------------------------------------------------------------------------------------------------- -- Subpages link configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['subpages-blurb'] -- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a -- display value of cfg['subpages-link-display']. In the English version this blurb is simply -- the link followed by a period, and the link display provides the actual text. --]] cfg['subpages-blurb'] = '$1.' --[[ -- cfg['subpages-link-display'] -- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'], -- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in -- the template namespace, the module namespace, or another namespace. --]] cfg['subpages-link-display'] = 'Subpages of this $1' -- cfg['template-pagetype'] -- The pagetype to display for template pages. cfg['template-pagetype'] = 'template' -- cfg['module-pagetype'] -- The pagetype to display for Lua module pages. cfg['module-pagetype'] = 'module' -- cfg['default-pagetype'] -- The pagetype to display for pages other than templates or Lua modules. cfg['default-pagetype'] = 'page' ---------------------------------------------------------------------------------------------------- -- Doc link configuration ---------------------------------------------------------------------------------------------------- -- cfg['doc-subpage'] -- The name of the subpage typically used for documentation pages. cfg['doc-subpage'] = 'doc' -- cfg['docpage-preload'] -- Preload file for template documentation pages in all namespaces. cfg['docpage-preload'] = 'Template:Documentation/preload' -- cfg['module-preload'] -- Preload file for Lua module documentation pages. cfg['module-preload'] = 'Template:Documentation/preload-module-doc' ---------------------------------------------------------------------------------------------------- -- HTML and CSS configuration ---------------------------------------------------------------------------------------------------- -- cfg['templatestyles'] -- The name of the TemplateStyles page where CSS is kept. -- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed. cfg['templatestyles'] = 'Module:Documentation/styles.css' -- cfg['container'] -- Class which can be used to set flex or grid CSS on the -- two child divs documentation and documentation-metadata cfg['container'] = 'documentation-container' -- cfg['main-div-classes'] -- Classes added to the main HTML "div" tag. cfg['main-div-classes'] = 'documentation' -- cfg['main-div-heading-class'] -- Class for the main heading for templates and modules and assoc. talk spaces cfg['main-div-heading-class'] = 'documentation-heading' -- cfg['start-box-class'] -- Class for the start box cfg['start-box-class'] = 'documentation-startbox' -- cfg['start-box-link-classes'] -- Classes used for the [view][edit][history] or [create] links in the start box. -- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]] cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks' -- cfg['end-box-class'] -- Class for the end box. cfg['end-box-class'] = 'documentation-metadata' -- cfg['end-box-plainlinks'] -- Plainlinks cfg['end-box-plainlinks'] = 'plainlinks' -- cfg['toolbar-class'] -- Class added for toolbar links. cfg['toolbar-class'] = 'documentation-toolbar' -- cfg['clear'] -- Just used to clear things. cfg['clear'] = 'documentation-clear' ---------------------------------------------------------------------------------------------------- -- Tracking category configuration ---------------------------------------------------------------------------------------------------- -- cfg['display-strange-usage-category'] -- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage -- or a /testcases subpage. This should be a boolean value (either true or false). cfg['display-strange-usage-category'] = true -- cfg['strange-usage-category'] -- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a -- /doc subpage or a /testcases subpage. cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage' --[[ ---------------------------------------------------------------------------------------------------- -- End configuration -- -- Don't edit anything below this line. ---------------------------------------------------------------------------------------------------- --]] return cfg d70e8b1402a2bbe08a1fef4b75d743e661af0c95 BEELETH 0 149 548 541 2023-01-20T23:48:39Z BEELETH 2 wikitext text/x-wiki {{Mbox|text=This [[non-canon]] page of a [[real person]] exists on the wiki because this person is a community member, content creator, and/or important person in the [[Vast Space]]'s real-world community. Please be respectful when editing this page.|name=realperson}}{{Infobox|above=BEELETH|data5=Autosexual, aromantic, polyamorous|data8=TBA|data7=TBA|label9=Offsite links|label8=Playlist|label7=Theme song|header6=Extra information|caption=Self-portrait|label5=Orientation|image=[[File:Beelethcreatura.png|200px|High-quality, astounding artistic rendition of BEELETH]]|data4=* they/them * he/him * it/its * no pronouns|label4=Pronouns|data3=Epicene, intersex, femboy, bear, androgyne|label3=Genders and labels|data2=* BEELETH (BEEL) * HALBERD (AL, HAL, HALB, HALBY, etc.) * URINALBEAST (YUUBI)|label2=Other names|header1=About this person|data9=TBA}}<small>''Not to be confused with [[Halberd (character)|Halberd]] or [[Beeleth]].''</small> '''BEELETH''' (also called '''BEEL''', '''HALBERD''', and '''YUUBI''' among many other names) is the real-world creator of the Vast Space, and is the main contributor to its lore and canon. They are also the creator of this wiki, and their user page can be accessed [[User:BEELETH|here]]. Their name is not always required to be written in all-capital letters, but it is preferred whenever possible or convenient. Though they use multiple sets of pronouns, this article exclusively refers to them with they/them for consistency. == Contributions to Vast Space == === General categories === * [[:Category:Created by BEELETH|Category:Created by BEELETH]] * [[:Category:Designed by BEELETH|Category:Designed by BEELETH]] === Specific === * Creator of the [[Vast Space]] and most canon media set within it ** Founder and bureaucrat of the Vast Space Wiki == Links == These pages are able to be used to find more first-hand information about BEELETH as well as their characters. * [https://beeleth.carrd.co/ Carrd] *[https://discord.gg/r9ZwNhV4rx Discord] * [https://www.roblox.com/users/30627566/profile Roblox] * [https://toyhou.se/BEELETH Toyhouse] * [https://twitter.com/itsbeeleth Twitter] == Related pages == * [[Beeleth]], a character who shares BEELETH's name and serves as a sona on occasion * [[Halberd]], an idealized representation of BEEL's future self * [[C.C.]], a character who BEEL once shared a name with [[Category:Real]] [[Category:Real people]] [[Category:Contributors]] 0a489e5d075a891ae6e465994dc07d02d82fede3 Halberd (character) 0 166 549 547 2023-01-20T23:49:40Z BEELETH 2 wikitext text/x-wiki {{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al * Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}} <small>''Not to be confused with [[BEELETH]].''</small> '''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. ==Personality== [[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]] As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky. He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly. Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling. ==Appearance== By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. ===Other design notes=== Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. *His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". *He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. **Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. **As long as he isn't doing a lot of walking, he's fine with shorter shorts too. * Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. *In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves. *His eye color is brown. ==Creation and development== His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. ==In-universe history == He does not have a backstory nor does he canonically exist in [[Vast Space]]. ==Abilities== Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. #'''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #*As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God. ==Trivia== *His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. **These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men. **A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. *BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. *Halberd White as a name is a reference to a voice line from Toontown spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. **However, he is not actually a doctor. ==Related pages== *[[BEELETH]], Hal's real-world counterpart *[[BEELETH's sona]], another representation of BEELETH [[Category:Sonas]] [[Category:Characters]] [[Category:LGBT+ characters]] [[Category:Non-canon]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]] b43d7909d2fec13641d9055f1d351b26754aeae7 590 549 2023-02-14T22:30:30Z BEELETH 2 wikitext text/x-wiki <small>''Not to be confused with [[BEELETH]].''</small>{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al * Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}{{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}'''Halberd''' (occasionally called '''Halberd White''' or '''Halberd Freezeray''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. He is not canon to [[Vast Space]]. ==Personality== [[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]] As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky. He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly. Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling. ==Appearance== By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. ===Other design notes=== Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. *His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". *He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. **Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. **As long as he isn't doing a lot of walking, he's fine with shorter shorts too. * Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. *In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves. *His eye color is brown. ==Creation and development== [[File:Men.png|alt=A cartoony, low-quality drawing of Halberd staring vacantly into the distance. In a floating thought bubble coming from his head is the text "Men (heart symbol)" followed by "and women" in smaller text.|thumb|149x149px|Things have certainly changed]] His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. In February 2023, he began being drawn with a more simple, shape-y design on occasion. ==Abilities== Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. #'''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #*As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God. == Gallery == ''<small>[[Halberd (character)/Gallery|Click here to see Halberd's full gallery.]]</small>'' === Recognized palettes === <gallery> File:Halwhite.png|"White hair" palette File:Halbrown.png|"Brown hair" palette </gallery> === Reference images === TBA ==Trivia== *His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. **These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men. **A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. *BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. === Name origin === Halberds are a type of weapon, and BEEL likes weapon names. Freezerays are also weapons. White as a surname is a reference to a voice line from Toontown Online spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. However, he is not really a doctor. ==Related pages== *[[BEELETH]], Hal's real-world counterpart *[[BEELETH's sona]], another representation of BEELETH [[Category:Sonas]] [[Category:Characters]] [[Category:LGBT+ characters]] [[Category:Non-canon]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]] [[Category:Stubs]] 72abc0126fffdfd3b6465693755a200c3ef246b0 595 590 2023-03-14T20:38:00Z BEELETH 2 moved mbox thingy further up wikitext text/x-wiki <small>''Not to be confused with [[BEELETH]].''</small>{{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al * Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}'''Halberd''' (occasionally called '''Halberd White''' or '''Halberd Freezeray''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. He is not canon to [[Vast Space]]. ==Personality== [[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]] As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky. He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly. Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling. ==Appearance== By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. ===Other design notes=== Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. *His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". *He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. **Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. **As long as he isn't doing a lot of walking, he's fine with shorter shorts too. * Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. *In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves. *His eye color is brown. ==Creation and development== [[File:Men.png|alt=A cartoony, low-quality drawing of Halberd staring vacantly into the distance. In a floating thought bubble coming from his head is the text "Men (heart symbol)" followed by "and women" in smaller text.|thumb|149x149px|Things have certainly changed]] His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. In February 2023, he began being drawn with a more simple, shape-y design on occasion. ==Abilities== Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. #'''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #*As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God. == Gallery == ''<small>[[Halberd (character)/Gallery|Click here to see Halberd's full gallery.]]</small>'' === Recognized palettes === <gallery> File:Halwhite.png|"White hair" palette File:Halbrown.png|"Brown hair" palette </gallery> === Reference images === TBA ==Trivia== *His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. **These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men. **A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. *BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. === Name origin === Halberds are a type of weapon, and BEEL likes weapon names. Freezerays are also weapons. White as a surname is a reference to a voice line from Toontown Online spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. However, he is not really a doctor. ==Related pages== *[[BEELETH]], Hal's real-world counterpart *[[BEELETH's sona]], another representation of BEELETH [[Category:Sonas]] [[Category:Characters]] [[Category:LGBT+ characters]] [[Category:Non-canon]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]] [[Category:Stubs]] b80a3ed1c2c5156c97ce9494b3d39985044c7c3a 596 595 2023-03-14T20:39:10Z BEELETH 2 better now :) wikitext text/x-wiki {{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}<small>''Not to be confused with [[BEELETH]].''</small>{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al * Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}'''Halberd''' (occasionally called '''Halberd White''' or '''Halberd Freezeray''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. He is not canon to [[Vast Space]]. ==Personality== [[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]] As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky. He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly. Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling. ==Appearance== By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. ===Other design notes=== Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. *His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". *He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. **Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. **As long as he isn't doing a lot of walking, he's fine with shorter shorts too. * Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. *In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves. *His eye color is brown. ==Creation and development== [[File:Men.png|alt=A cartoony, low-quality drawing of Halberd staring vacantly into the distance. In a floating thought bubble coming from his head is the text "Men (heart symbol)" followed by "and women" in smaller text.|thumb|149x149px|Things have certainly changed]] His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. In February 2023, he began being drawn with a more simple, shape-y design on occasion. ==Abilities== Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. #'''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #*As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God. == Gallery == ''<small>[[Halberd (character)/Gallery|Click here to see Halberd's full gallery.]]</small>'' === Recognized palettes === <gallery> File:Halwhite.png|"White hair" palette File:Halbrown.png|"Brown hair" palette </gallery> === Reference images === TBA ==Trivia== *His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. **These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men. **A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. *BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. === Name origin === Halberds are a type of weapon, and BEEL likes weapon names. Freezerays are also weapons. White as a surname is a reference to a voice line from Toontown Online spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. However, he is not really a doctor. ==Related pages== *[[BEELETH]], Hal's real-world counterpart *[[BEELETH's sona]], another representation of BEELETH [[Category:Sonas]] [[Category:Characters]] [[Category:LGBT+ characters]] [[Category:Non-canon]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]] [[Category:Stubs]] 707a336fc7d6c4a9c084bac50fde640820871cad Category:Contributors 14 277 550 2023-01-20T23:52:39Z BEELETH 2 Created page with "The pages in this category describe [[real people]] who have meaningfully contributed to the [[Vast Space]] in some way, whether they are doing it actively or have only done certain things for it. [[Category:Real people]] [[Category:Real]]" wikitext text/x-wiki The pages in this category describe [[real people]] who have meaningfully contributed to the [[Vast Space]] in some way, whether they are doing it actively or have only done certain things for it. [[Category:Real people]] [[Category:Real]] a6f4fc68cccc09643ec98027f72ec1a2bfb1be10 Parasite 0 278 551 2023-01-26T16:48:16Z BEELETH 2 Redirected page to [[Parasites (disambiguation)]] wikitext text/x-wiki #REDIRECT [[Parasites (disambiguation)]] 7d0c2e19d8942422d52eb0cc296b99c2a73dd119 Parasites 0 279 552 2023-01-26T16:48:42Z BEELETH 2 Redirected page to [[Parasites (disambiguation)]] wikitext text/x-wiki #REDIRECT [[Parasites (disambiguation)]] 7d0c2e19d8942422d52eb0cc296b99c2a73dd119 John Blunts 0 280 553 2023-01-26T16:53:09Z BEELETH 2 placeholder wikitext text/x-wiki {{Infobox|above=John Blunts}} '''Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts''', also simply referred to as '''John Blunts''', '''Mr. Blunts''', or a variety of other similar names, is the famous and wealthy founder and current owner of an alternate-universe 4Kids Entertainment. He is also the wielder of the [[Burning Super Death Sword]]. [[Category:Characters]] f9e534fd14f7a4dcbb25cd24ecaa94c957eba2b2 556 553 2023-01-26T17:24:03Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=John Blunts|image=[[File:Johnpink.png|200px|placeholder text]]|header1=Creation and development|label2=Development|data2=* September 30, 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts|label6=Other names|data6=* John Blunts * Johnny Blunts * Mr. Blunts|label7=Genders and labels|data7=Uncertain|label8=Pronouns|data8=* he/him * it/its|label9=Orientation|data9=Uncertain|label10=Species|data10=[[Furry]] llama|header11=Plot information|label12=Space|data12=[[Uncharted Space]]}} '''Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts''' is the famous and wealthy founder and current owner of an alternate-universe 4Kids Entertainment. He is also the wielder of the [[Burning Super Death Sword]]. He is tied to [[Cream]] in some way that has not yet been established. == Personality == Blunts is naturally charismatic despite his bumbling, foolish, and otherwise idiotic nature. To most, he is a pleasure to be around, though some may find his unintentional egoism to be grating. == Appearance == John Blunts is a [[furry]] llama with long, shaggy wool that is longest on his legs and head. He is constantly grinning and has half-lidded eyes; under his smile is a short, beard-like extension of his facial wool. He has a cartoonishly muscular build with an exaggerated upper body and a thinner lower body. On his feet, he has cloven hooves and a single toe in the back. His hands are also cloven hooves with a single thumb. His fingers and toes are drawn as entirely covered in hoof material rather than partially. === Other design notes === He can be portrayed in any palette with any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * His main two palettes are a "pink lemonade" palette and a more creamy-colored palette. ** The Burning Super Death Sword's palette does not inherently change based on John's palette. * He was originally intended to wear black, high-end sunglasses, but they were dropped from his design. However, he can still be drawn wearing them though they may look awkward in some styles. * The arm hair drawn over his forearm wool is ''strongly'' recommended to be drawn unless it would look out of place in a certain art style. == Creation and development == Originally, John Blunts was created as a Roblox avatar. == In-universe history == TBA == Abilities == # '''Bending the laws of reality:''' TBA # '''Wielding the Burning Super Death Sword:''' TBA == Gallery == ''<small>[[John Blunts/Gallery|Click here to see John Blunts' full gallery.]]</small>'' === Recognized palettes === <gallery> File:Johnpink.png|"Pink lemonade" palette File:Johnwhite.png|"Cream" palette </gallery> === Reference images === TBA == Trivia == TBA == Related pages == * [[Cream]] [[Category:Characters]] 29870fb5f595f69ea19645bbc461464ffd82ed8a 557 556 2023-01-26T17:51:03Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=John Blunts|image=[[File:Johnpink.png|200px|placeholder text]]|header1=Creation and development|label2=Development|data2=* September 30, 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts|label6=Other names|data6=* John Blunts * Johnny Blunts * Mr. Blunts|label7=Genders and labels|data7=Cisgender male, himbo|label8=Pronouns|data8=* he/him * it/its|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Furry]] llama|header11=Plot information|label12=Space|data12=[[Uncharted Space]]}} '''John Blunts''', known formally as '''Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts''', is the famous and wealthy founder and owner of an alternate-universe 4Kids Entertainment. He is also the wielder of the [[Burning Super Death Sword]]. He is tied to [[Cream]] in some way that has not yet been established. == Personality == Blunts is naturally charismatic despite his bumbling, foolish, and otherwise idiotic nature. To most, he is a pleasure to be around, though some may find his unintentional egoism to be grating. == Appearance == John Blunts is a [[furry]] llama with long, shaggy wool that is longest on his legs and head. He is constantly grinning and has half-lidded eyes; under his smile is a short, beard-like extension of his facial wool. He has a cartoonishly muscular build with an exaggerated upper body and a thinner lower body. On his feet, he has cloven hooves and a single toe in the back. His hands are also cloven hooves with a single thumb. His fingers and toes are drawn as entirely covered in hoof material rather than partially. === Other design notes === He can be portrayed in any palette with any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * His main two palettes are a "pink lemonade" palette and a more creamy-colored palette. ** The Burning Super Death Sword's palette does not inherently change based on John's palette. * He was originally intended to wear black, high-end sunglasses, but they were dropped from his design. However, he can still be drawn wearing them though they may look awkward in some styles. * The arm hair drawn over his forearm wool is ''strongly'' recommended to be drawn unless it would look out of place in a certain art style. == Creation and development == Originally, John Blunts was created as a Roblox avatar. == In-universe history == TBA == Abilities == # '''Bending the laws of reality:''' As John Blunts has such a cartoony presence, he is able to influence and manipulate nearly anything with minimal effort. He has some control over what he is able to affect, but it is mostly determined by how funny it is in the moment and whether or not it must be censored. #* The definition of "funny" is not entirely known for sure when it comes to his reality-bending power. #** It can be assumed to be low-brow. #* His passive censorship ability mostly just affects swearing, weapons, drugs, alcohol, blood, and death. #** Despite its drug references, his name is always immune to censorship. #** Guns will actually disappear if they are brought anywhere near him, or if they are in a position that could harm anyone near him. #** If he or someone in his ability's range is to die, they shall instead be sent to the [[Dark Side]]. #** Swords physically cannot be used to directly cut organic beings in his range. If they are to be used as a weapon at all, they must be used in combat that does not require physical contact. For example, "air slashes" are safe to use. # '''Wielding the Burning Super Death Sword:''' John Blunts is one of the only people who is able to wield the Burning Super Death Sword; this is partially because he is too stupid to be affected by the weapon's mind-controlling manipulation and also because the sword has just given up on trying to use its power on him. # '''Being a "main character":''' Despite not being an overly prominent character in the [[Uncharted Space]]'s lore, many events in his life are in his favor in some way or will lead to some significant changes to his development as a person. == Gallery == ''<small>[[John Blunts/Gallery|Click here to see John Blunts' full gallery.]]</small>'' === Recognized palettes === <gallery> File:Johnpink.png|"Pink lemonade" palette File:Johnwhite.png|"Cream" palette </gallery> === Reference images === TBA == Trivia == * TBA == Related pages == * [[Cream]] [[Category:Characters]] 7483cdb74167d29132d7b2f79896ae3979a4d62d 563 557 2023-01-26T18:30:34Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=John Blunts|image=[[File:Johnpink.png|200px|placeholder text]]|header1=Creation and development|label2=Development|data2=* September 30, 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts|label6=Other names|data6=* John Blunts * Johnny Blunts * Mr. Blunts|label7=Genders and labels|data7=Cisgender male, himbo|label8=Pronouns|data8=* he/him * it/its|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Furry]] llama|header11=Plot information|label12=Space|data12=[[Uncharted Space]]}} '''John Blunts''', known formally as '''Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts''', is the famous and wealthy founder and owner of an alternate-universe 4Kids Entertainment. He is also the wielder of the [[Burning Super Death Sword]]. He is tied to [[Cream]] in some way that has not yet been established. == Personality == Blunts is naturally charismatic despite his bumbling, foolish, and otherwise idiotic nature. To most, he is a pleasure to be around, though some may find his unintentional egoism to be grating. == Appearance == John Blunts is a [[furry]] llama with long, shaggy wool that is longest on his legs and head. He is constantly grinning and has half-lidded eyes; under his smile is a short, beard-like extension of his facial wool. He has a cartoonishly muscular build with an exaggerated upper body and a thinner lower body. On his feet, he has cloven hooves and a single toe in the back. His hands are also cloven hooves with a single thumb. His fingers and toes are drawn as entirely covered in hoof material rather than partially. === Other design notes === He can be portrayed in any palette with any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * His main two palettes are a "pink lemonade" palette and a more creamy-colored palette. ** The Burning Super Death Sword's palette does not inherently change based on John's palette. * He was originally intended to wear black, high-end sunglasses, but they were dropped from his design. However, he can still be drawn wearing them though they may look awkward in some styles. * The arm hair drawn over his forearm wool is ''strongly'' recommended to be drawn unless it would look out of place in a certain art style. == Creation and development == Originally, John Blunts was created as a Roblox avatar. == In-universe history == TBA == Abilities == # '''Bending the laws of reality:''' As John Blunts has such a cartoony presence, he is able to influence and manipulate nearly anything with minimal effort. He has some control over what he is able to affect, but it is mostly determined by how funny it is in the moment and whether or not it must be censored. #* The definition of "funny" is not entirely known for sure when it comes to his reality-bending power. #** It can be assumed to be low-brow. #* His passive censorship ability mostly just affects swearing, weapons, drugs, alcohol, blood, and death. #** Despite its drug references, his name is always immune to censorship. #** Guns will actually disappear if they are brought anywhere near him, or if they are in a position that could harm anyone near him. #** If he or someone in his ability's range is to die, they shall instead be sent to the [[Dark Side]]. #** Swords physically cannot be used to directly cut organic beings in his range. If they are to be used as a weapon at all, they must be used in combat that does not require physical contact. For example, "air slashes" are safe to use. # '''Wielding the Burning Super Death Sword:''' John Blunts is one of the only people who is able to wield the Burning Super Death Sword; this is partially because he is too stupid to be affected by the weapon's mind-controlling manipulation and also because the sword has just given up on trying to use its power on him. # '''Being a "main character":''' Despite not being an overly prominent character in the [[Uncharted Space]]'s lore, many events in his life are in his favor in some way or will lead to some significant changes to his development as a person. == Gallery == ''<small>[[John Blunts/Gallery|Click here to see John Blunts' full gallery.]]</small>'' === Recognized palettes === <gallery> File:Johnpink.png|"Pink lemonade" palette File:Johnwhite.png|"Cream" palette </gallery> === Reference images === TBA == Trivia == * TBA == Related pages == * [[Cream]], John Blunts' dramatic foil [[Category:Characters]] [[Category:Stubs]] [[Category:Furries]] 9350284403721c33e139927004b6d24fe3cf9096 576 563 2023-01-27T22:13:14Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=John Blunts|image=[[File:Johnpink.png|200px|placeholder text]]|header1=Creation and development|label2=Development|data2=* September 30, 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts|label6=Other names|data6=* John Blunts * Johnny Blunts * Mr. Blunts|label7=Genders and labels|data7=Unconfirmed gender (masculine), himbo|label8=Pronouns|data8=* he/him * it/its|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Furry]] llama|header11=Plot information|label12=Space|data12=[[Uncharted Space]]}} '''John Blunts''', known formally as '''Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts''', is the famous and wealthy founder and owner of an alternate-universe [[4Kids Entertainment]]. He is also the wielder of the [[Burning Super Death Sword]]. He is tied to [[Cream]] in some way that has not yet been established. == Personality == Blunts is naturally charismatic despite his bumbling, foolish, and otherwise idiotic nature. To most, he is a pleasure to be around, though some may find his unintentional egoism to be grating. He is quite oblivious to a lot of the things that go on around him. == Appearance == John Blunts is a [[furry]] llama with long, shaggy two-toned wool that is longest on his legs and head. He is constantly grinning and has half-lidded eyes; under his smile is a short, beard-like extension of his facial wool. He has a dog-like tail that also tends to wag when he is excited. He has a cartoonishly muscular build with an exaggerated upper body and a thinner lower body. On his feet, he has cloven hooves and a single toe in the back. His hands are also cloven hooves with a single thumb. His fingers and toes are drawn as entirely covered in hoof material rather than partially. He is almost always seen wearing the same outfit consisting of a shirt with rolled-up sleeves, a vest, a tie, a belt, and bandages. It's very rare for him to wear pants or any actual clothing on his lower body. === Other design notes === He can be portrayed in any palette with any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * His main two palettes are a "pink lemonade" palette and a more creamy-colored palette. ** The Burning Super Death Sword's palette does not inherently change based on John's palette. * He was originally intended to wear black, high-end sunglasses, but they were dropped from his design. However, he can still be drawn wearing them though they may look awkward in some styles. * The arm hair drawn over his forearm wool is ''strongly'' recommended to be drawn unless it would look out of place in a certain art style. * Though it's okay to draw him with the biologically correct amount of fingers and toes, it is preferred that he only has 3 digits on each foot and hand. == Creation and development == Originally, John Blunts was created as a Roblox avatar. == In-universe history == Not much about his life prior to founding 4Kids Entertainment is known. === Founding of 4Kids Entertainment === TBA == Abilities == # '''Bending the laws of reality:''' As John Blunts has such a cartoony presence, he is able to influence and manipulate nearly anything with minimal effort. He has some control over what he is able to affect, but it is mostly determined by how funny it is in the moment and whether or not it must be censored. #* The definition of "funny" is not entirely known for sure when it comes to his reality-bending power. #** It can be assumed to be low-brow. #* His passive censorship ability mostly just affects swearing, weapons, drugs, alcohol, blood, sexual content, and death. #** Despite its drug references, his name is always immune to censorship. #** Guns will actually disappear if they are brought anywhere near him, or if they are in a position that could harm anyone near him. #** If he or someone in his ability's range is to die, they shall instead be sent to the [[Dark Side]]. #** Swords physically cannot be used to directly cut organic beings in his range. If they are to be used as a weapon at all, they must be used in combat that does not require physical contact. For example, "air slashes" are safe to use. # '''Wielding the Burning Super Death Sword:''' John Blunts is one of the only people who is able to wield the Burning Super Death Sword; this is partially because he is too stupid to be affected by the weapon's mind-controlling manipulation and also because the sword has just given up on trying to use its power on him. # '''Being a "main character":''' Despite not being an overly prominent character in the [[Uncharted Space]]'s lore, many events in his life are in his favor in some way or will lead to some significant changes to his development as a person. == Gallery == ''<small>[[John Blunts/Gallery|Click here to see John Blunts' full gallery.]]</small>'' === Recognized palettes === <gallery> File:Johnpink.png|"Pink lemonade" palette File:Johnwhite.png|"Cream" palette </gallery> === Reference images === TBA == Trivia == * Despite its name, the cream palette is not named after Cream, but rather just the colors used. * The bandages on his legs were a last-minute design choice, and he was originally going to wear pants. === Name origin === John Blunts was given his first name because John feels very generic, meanwhile his last name was chosen because it sounded fun to say right after his first name. As well as that, it's an ironic drug reference given his censorship ability and kid-friendly career. All of his middle names were chosen at random based on what sounded the most stupid. == Related pages == * [[Cream]], John Blunts' dramatic foil [[Category:Characters]] [[Category:Stubs]] [[Category:Furries]] 6e2b1aa12190179ddf027b8471ff3eb5996ffb50 File:Johnpink.png 6 281 554 2023-01-26T16:53:57Z BEELETH 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Johnwhite.png 6 282 555 2023-01-26T16:54:12Z BEELETH 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Cream 0 283 558 2023-01-26T17:54:29Z BEELETH 2 Created page with "{{Infobox|above=Cream}} '''Cream DuCroppe''', usually referred to mononymously as '''Cream''', is a criminal. == Personality == TBA == Appearance == TBA == Creation and development == TBA == In-universe history == TBA == Abilities == TBA == Trivia == TBA == Related pages == * [[John Blunts]] [[Category:Characters]]" wikitext text/x-wiki {{Infobox|above=Cream}} '''Cream DuCroppe''', usually referred to mononymously as '''Cream''', is a criminal. == Personality == TBA == Appearance == TBA == Creation and development == TBA == In-universe history == TBA == Abilities == TBA == Trivia == TBA == Related pages == * [[John Blunts]] [[Category:Characters]] e2d96b0c5057d8ef356471663cdfdfc425fb34c4 561 558 2023-01-26T18:26:42Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Cream|image=[[File:Cream.png|200px|Cream]]|header1=Creation and development|data2=Uncertain|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information}} '''Cream DuCroppe''', usually referred to mononymously as '''Cream''', is a notorious mob boss who resides in [[New Pokopoko]]. He's the current leader of [[the Cavalry]]. == Personality == TBA == Appearance == Cream is an off-white [[furry]] sheep with a large, curvy build. He is usually seen wearing revealling clothes, but will occasionally dress more appropriately for more serious situations. He's usually given fangs. Because of his heterochromia, his left eye is green while his right eye is blue. === Other design notes === He can be portrayed in any palette with any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * The buttons on his main outfit's jacket depict a pink cat and a heart. The cat button is a reference to Professor Genki from the Saints Row series, though it does not have to actually depict him in artwork. * He has a backpack, but tends to only wear one of the straps. He often holds onto it while wearing it. == Creation and development == Cream was originally created as an avatar in Saints Row the Third at some point in 2021 and was planned to only exclusively be a Saints Row OC, but grew to become a canon character in the [[Uncharted Space]] around January 2023. After being moved, it was decided that Cream would be [[John Blunts]]' foil in some way due to their design similarities and drastic personal differences. His original design is very similar to his current version, but lacks the backpack, has slightly different button designs, and has different colors. His main color was blue but was changed to purple to line up with the signature color of the Saints (despite them not canonically existing in the Uncharted Space). == In-universe history == TBA == Abilities == # TBA == Trivia == * TBA === Name origins === Cream did not recieve a name until some time after he was already created; he was given the name Cream because of his wool color and the irony of a cutesy name paired with his design, personality, and in-universe role. The invented last name DuCroppe was chosen because of the phrase "cream of the crop". == Related pages == * [[John Blunts]], Cream's dramatic foil * [[Medusa]], a [[pack]] leader in Tooth and Claw [[Category:Characters]] 639e7d3ee121f9cd80d970f642ac3a1d5c99f770 562 561 2023-01-26T18:28:53Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Cream|image=[[File:Cream.png|200px|Cream]]|header1=Creation and development|data2=Uncertain|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information}} '''Cream DuCroppe''', usually referred to mononymously as '''Cream''', is a notorious mob boss who resides in [[New Pokopoko]]. He's the current leader of [[the Cavalry]]. == Personality == TBA == Appearance == Cream is an off-white [[furry]] sheep with a large, curvy build. He is usually seen wearing revealling clothes, but will occasionally dress more appropriately for more serious situations. He's usually given fangs. Because of his heterochromia, his left eye is green while his right eye is blue. === Other design notes === He can be portrayed in any palette with any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * The buttons on his main outfit's jacket depict a pink cat and a heart. The cat button is a reference to Professor Genki from the Saints Row series, though it does not have to actually depict him in artwork. * He has a backpack, but tends to only wear one of the straps. He often holds onto it while wearing it. == Creation and development == Cream was originally created as an avatar in Saints Row the Third at some point in 2021 and was planned to only exclusively be a Saints Row OC, but grew to become a canon character in the [[Uncharted Space]] around January 2023. After being moved, it was decided that Cream would be [[John Blunts]]' foil in some way due to their design similarities and drastic personal differences. His original design is very similar to his current version, but lacks the backpack, has slightly different button designs, and has different colors. His main color was blue but was changed to purple to line up with the signature color of the Saints (despite them not canonically existing in the Uncharted Space). == In-universe history == TBA == Abilities == # TBA == Trivia == * TBA === Name origins === Cream did not recieve a name until some time after he was already created; he was given the name Cream because of his wool color and the irony of a cutesy name paired with his design, personality, and in-universe role. The invented last name DuCroppe was chosen because of the phrase "cream of the crop". == Related pages == * [[John Blunts]], Cream's dramatic foil * [[Medusa]], a [[pack]] leader in Tooth and Claw [[Category:Characters]] [[Category:Stubs]] 714452a3badb36690f4fc3d58680574e5e4a6e2f 564 562 2023-01-26T18:30:57Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Cream|image=[[File:Cream.png|200px|Cream]]|header1=Creation and development|data2=Uncertain|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information}} '''Cream DuCroppe''', usually referred to mononymously as '''Cream''', is a notorious mob boss who resides in [[New Pokopoko]]. He's the current leader of [[the Cavalry]]. == Personality == TBA == Appearance == Cream is an off-white [[furry]] sheep with a large, curvy build. He is usually seen wearing revealling clothes, but will occasionally dress more appropriately for more serious situations. He's usually given fangs. Because of his heterochromia, his left eye is green while his right eye is blue. === Other design notes === He can be portrayed in any palette with any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * The buttons on his main outfit's jacket depict a pink cat and a heart. The cat button is a reference to Professor Genki from the Saints Row series, though it does not have to actually depict him in artwork. * He has a backpack, but tends to only wear one of the straps. He often holds onto it while wearing it. == Creation and development == Cream was originally created as an avatar in Saints Row the Third at some point in 2021 and was planned to only exclusively be a Saints Row OC, but grew to become a canon character in the [[Uncharted Space]] around January 2023. After being moved, it was decided that Cream would be [[John Blunts]]' foil in some way due to their design similarities and drastic personal differences. His original design is very similar to his current version, but lacks the backpack, has slightly different button designs, and has different colors. His main color was blue but was changed to purple to line up with the signature color of the Saints (despite them not canonically existing in the Uncharted Space). == In-universe history == TBA == Abilities == # TBA == Trivia == * TBA === Name origins === Cream did not recieve a name until some time after he was already created; he was given the name Cream because of his wool color and the irony of a cutesy name paired with his design, personality, and in-universe role. The invented last name DuCroppe was chosen because of the phrase "cream of the crop". == Related pages == * [[John Blunts]], Cream's dramatic foil * [[Medusa]], a [[pack]] leader in Tooth and Claw [[Category:Characters]] [[Category:Stubs]] [[Category:Furries]] ce9996648abedeb86873a0fafb2245f5cdf2b472 572 564 2023-01-26T22:31:06Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Cream|image=[[File:Cream.png|200px|Cream]]|header1=Creation and development|data2=Uncertain|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information}} '''Cream DuCroppe''', usually referred to mononymously as '''Cream''', is a notorious mob boss who resides in [[New Pokopoko]]. He's the current leader of [[the Cavalry]]. == Personality == TBA == Appearance == Cream is an off-white [[furry]] sheep with a large, curvy build. He is usually seen wearing revealling clothes, but will occasionally dress more appropriately for more serious situations. He's usually given fangs. Because of his heterochromia, his left eye is green while his right eye is blue. === Other design notes === He can be portrayed in any palette with any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * The buttons on his main outfit's jacket depict a pink cat and a heart. The cat button is a reference to Professor Genki from the Saints Row series, though it does not have to actually depict him in artwork. * He has a backpack, but tends to only wear one of the straps. He often holds onto it while wearing it. == Creation and development == Cream was originally created as an avatar in Saints Row the Third at some point in 2021 and was planned to only exclusively be a Saints Row OC, but grew to become a canon character in the [[Uncharted Space]] around January 2023. After being moved, it was decided that Cream would be [[John Blunts]]' foil in some way due to their design similarities and drastic personal differences. His original design is very similar to his current version, but lacks the backpack, has slightly different button designs, and has different colors. His main color was blue but was changed to purple to line up with the signature color of the Saints (despite them not canonically existing in the Uncharted Space). == In-universe history == TBA == Abilities == # TBA == Trivia == * TBA === Name origins === Cream did not recieve a name until some time after he was already created; he was given the name Cream because of his wool color and the irony of a cutesy name paired with his design, personality, and in-universe role. The invented last name DuCroppe was chosen because of the phrase "cream of the crop". == Related pages == * [[John Blunts]], Cream's dramatic foil * [[Medusa]], a [[pack]] leader in Tooth and Claw [[Category:Characters]] [[Category:Stubs]] [[Category:Furries]] [[Category:The Cavalry]] [[Category:Uncharted Space]] [[Category:New Pokopoko]] 738cda4fe69b944d50c06175da1d349e68fdeb4b Cream DuCroppe 0 284 559 2023-01-26T18:02:45Z BEELETH 2 Redirected page to [[Cream]] wikitext text/x-wiki #REDIRECT [[Cream]] 8ae5815e78ee76eb50258de0ed147c3ea7d4168d File:Cream.png 6 285 560 2023-01-26T18:04:21Z BEELETH 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Module:If empty 828 323 639 2023-01-26T18:33:28Z vast>MSGJ 0 lastk is not needed Scribunto text/plain local p = {} function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) for k,v in ipairs(args) do if v ~= '' then return v end end end return p 4790391408957dea3ff9f453834c05f6b379a45c New Pokopoko 0 286 565 2023-01-26T19:57:57Z BEELETH 2 Created page with "{{Infobox|above=New Pokopoko}} <small>''Not to be confused with [[Old Pokopoko]].''</small> '''New Pokopoko''', rarely referred to solely as '''Pokopoko''', is a populous, bustling city in the [[Light Side]] of the [[Uncharted Space]]. Aside from the advanced technology and countless companies, celebrities, and hotspots in its walls, the city most notably serves as the home of [[Bunjeecorp]]'s largest terrestrial headquarters. It is the sister city of [[Gorgondel]]...." wikitext text/x-wiki {{Infobox|above=New Pokopoko}} <small>''Not to be confused with [[Old Pokopoko]].''</small> '''New Pokopoko''', rarely referred to solely as '''Pokopoko''', is a populous, bustling city in the [[Light Side]] of the [[Uncharted Space]]. Aside from the advanced technology and countless companies, celebrities, and hotspots in its walls, the city most notably serves as the home of [[Bunjeecorp]]'s largest terrestrial headquarters. It is the sister city of [[Gorgondel]]. == Creation and development == Initially, New Pokopoko was created as a one-off location during an AI Dungeon session set in the Uncharted Space. == In-universe history == TBA == Geography == Before it fully developed, New Pokopoko stood atop a flat, rocky plateau with little vegetation. === Major areas and districts === TBA ==== New Pokopoko Main Gate ==== Though there are other gates to the city, the Main Gate is the most popular and well-known, accessible to those coming from the South or those who are leaving the city. It resembles a theme park's gates, and usually has greeters available to visitors at all times of the day; these greeters may be robotic, holographic, or organic. It often is not patrolled by live militia, instead being monitored by machinery and cameras unless there is an emergency of some sort. ==== Rainbow roads ==== The "rainbow roads" of New Pokopoko are the busiest streets in the city. They are heavily marketed to tourists and are often elaborately decorated, even moreso than the rest of the city's streets and buildings. ==== Orbits ==== Due to the unique architecture and technology of New Pokopoko, orbits currently exist nowhere else in the Light Side, and there are only a few in the city at all. An orbit consists of several floating (free-floating or otherwise suspended) buildings, areas, or structures that slowly circle a larger hub platform in the center. Each of the floating platforms in the orbit may be openly accessible, or they may be sealed in a bubble-like, soundproof barrier only permeable via teleportation or other specialized transport. Orbits are most popular with the youth, but are sometimes utilized by those who seek privacy and unique scenery. === Architecture === New Pokopoko is physically walled off from the majority of its border and is protected by an [[New Pokopoko alchemic barrier|invisible barrier]] that can be readily configured by some Bunjeecorp officials at any time. This barrier also serves as a screen on which special messages can be projected, or a place for advertisements to be displayed at night alongside the stars. The walls of the city open at specific points in each cardinal direction. The Western wall is exclusively for Bunjeecorp use, as it is connected to a major terrestrial starship port overlooking the Gobu Canyon; it would be a security and safety threat if unauthorized individuals were able to freely access it. The Southern wall opens at two points, but the New Pokopoko Main Gate is the most used opening. The other southern opening is generally reserved for emergencies or for the local militia. Generally, the architecture of New Pokopoko is sleek and modern, utilizing both straight edges and curves to achieve a futuristic look. Many buildings and landmarks are white, blue, or transparent; it also isn't unusual for them to have color-changing parts or be able to reflect light in beautiful, creative ways. ==== Transportation ==== Though it's possible for the most part to walk from place to place, a lot of areas are only accessible through certain modes of transport. For example, some buildings are suspended in mid-air and must be accessed through [NOTE TO SELF: COME UP WITH NAMES FOR THE TELEPORTING PLATFORMS]. Some places also have tubes for people or specialized equipment to shoot through quickly, but this isn't very common due to how much space that the tubes can take up; they are, however, often more cost-effective to create and maintain than [TELEPORTING PLATFORMS]. The [TELEPORTING PLATFORMS] used throughout the city are generally paid for by the government, but will sometimes be owned by businesses or individuals who can afford them. Personal vehicles are very uncommon in New Pokopoko due to the reliability and often cheap prices of public transport options provided by the city or by some businesses. === Industries and economy === As do most other locations in === Climate === Prior to New Pokopoko's development into a more modern city, the area's climate was arid and temperate. Nowadays, the weather is largely controlled by a semi-automated system jointly controlled by Bunjeecorp and the New Pokopoko City Council; the weather patterns and seasons are almost never extreme, and are based on the natural climate of non-desert regions of the Light Side. == Government == New Pokopoko is governed by the New Pokopoko City Council, which is openly heavily influenced by Bunjeecorp. === Militia === TBA == Culture == TBA == Trivia == * TBA == Related pages == * [[Gorgondel]], New Pokopoko's sister city * [[Gobu Canyon]], a nearby region 03b4a9bf768adf0567e0ef6a38e918a898e21352 566 565 2023-01-26T20:00:35Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=New Pokopoko}} <small>''Not to be confused with [[Old Pokopoko]].''</small> '''New Pokopoko''', rarely referred to solely as '''Pokopoko''', is a populous, bustling city in the [[Light Side]] of the [[Uncharted Space]]. Aside from the advanced technology and countless companies, celebrities, and hotspots in its walls, the city most notably serves as the home of [[Bunjeecorp]]'s largest terrestrial headquarters. It is the sister city of [[Gorgondel]]. == Creation and development == Initially, New Pokopoko was created as a one-off location during an AI Dungeon session set in the Uncharted Space. == In-universe history == TBA == Geography == Before it fully developed, New Pokopoko stood atop a flat, rocky plateau with little vegetation. === Major areas and districts === TBA ==== New Pokopoko Main Gate ==== Though there are other gates to the city, the Main Gate is the most popular and well-known, accessible to those coming from the South or those who are leaving the city. It resembles a theme park's gates, and usually has greeters available to visitors at all times of the day; these greeters may be robotic, holographic, or organic. It often is not patrolled by live militia, instead being monitored by machinery and cameras unless there is an emergency of some sort. ==== Rainbow roads ==== The "rainbow roads" of New Pokopoko are the busiest streets in the city. They are heavily marketed to tourists and are often elaborately decorated, even moreso than the rest of the city's streets and buildings. ==== Orbits ==== Due to the unique architecture and technology of New Pokopoko, orbits currently exist nowhere else in the Light Side, and there are only a few in the city at all. An orbit consists of several floating (free-floating or otherwise suspended) buildings, areas, or structures that slowly circle a larger hub platform in the center. Each of the floating platforms in the orbit may be openly accessible, or they may be sealed in a bubble-like, soundproof barrier only permeable via teleportation or other specialized transport. Orbits are most popular with the youth, but are sometimes utilized by those who seek privacy and unique scenery. === Architecture === New Pokopoko is physically walled off from the majority of its border and is protected by an [[New Pokopoko alchemic barrier|invisible barrier]] that can be readily configured by some Bunjeecorp officials at any time. This barrier also serves as a screen on which special messages can be projected, or a place for advertisements to be displayed at night alongside the stars. The walls of the city open at specific points in each cardinal direction. The Western wall is exclusively for Bunjeecorp use, as it is connected to a major terrestrial starship port overlooking the Gobu Canyon; it would be a security and safety threat if unauthorized individuals were able to freely access it. The Southern wall opens at two points, but the New Pokopoko Main Gate is the most used opening. The other southern opening is generally reserved for emergencies or for the local militia. Generally, the architecture of New Pokopoko is sleek and modern, utilizing both straight edges and curves to achieve a futuristic look. Many buildings and landmarks are white, blue, or transparent; it also isn't unusual for them to have color-changing parts or be able to reflect light in beautiful, creative ways. ==== Transportation ==== Though it's possible for the most part to walk from place to place, a lot of areas are only accessible through certain modes of transport. For example, some buildings are suspended in mid-air and must be accessed through [NOTE TO SELF: COME UP WITH NAMES FOR THE TELEPORTING PLATFORMS]. Some places also have tubes for people or specialized equipment to shoot through quickly, but this isn't very common due to how much space that the tubes can take up; they are, however, often more cost-effective to create and maintain than [TELEPORTING PLATFORMS]. The [TELEPORTING PLATFORMS] used throughout the city are generally paid for by the government, but will sometimes be owned by businesses or individuals who can afford them. Personal vehicles are very uncommon in New Pokopoko due to the reliability and often cheap prices of public transport options provided by the city or by some businesses. === Industries and economy === As do most other locations in === Climate === Prior to New Pokopoko's development into a more modern city, the area's climate was arid and temperate. Nowadays, the weather is largely controlled by a semi-automated system jointly controlled by Bunjeecorp and the New Pokopoko City Council; the weather patterns and seasons are almost never extreme, and are based on the natural climate of non-desert regions of the Light Side. == Government == New Pokopoko is governed by the New Pokopoko City Council, which is openly heavily influenced by Bunjeecorp. === Militia === TBA == Culture == TBA == Trivia == * TBA == Related pages == * [[Gorgondel]], New Pokopoko's sister city * [[Gobu Canyon]], a nearby region [[Category:Locations]] [[Category:Uncharted Space]] [[Category:Locations in Uncharted Space]] [[Category:Stubs]] 23163f963024e946ff0ee43f735fd459384ddd61 586 566 2023-02-13T21:44:16Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=New Pokopoko|header1=Creation and development|label2=Development|data2=November 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Location information|caption=[[BEELETH]]'s concept art from February 2023 (PLACEHOLDER, WILL ADD LATER)|image=[[File:Placeholder.png|200px|Placeholder]]}} <small>''Not to be confused with [[Old Pokopoko]].''</small> '''New Pokopoko''', rarely (but still known to be) referred to solely as '''Pokopoko''', is a populous, bustling city in the [[Light Side]] of the [[Uncharted Space]]. Aside from the advanced technology and countless companies, celebrities, and hotspots in its walls, the city most notably serves as the home of [[Bunjeecorp]]'s largest terrestrial headquarters. It is the sister city of [[Gorgondel]], and the two cities share technology and business with each other. They are also two of the easiest non-adjacent [[locations]] in Uncharted Space to travel between, as intercity travel is made more convenient and accelerated with Bunjeecorp and [[HYDRA]]'s [[OPTRASYS|Optimized Transport System]]. It was originally only used for the transport of material, goods, militia, and important figures, but was later expanded to be for the general population once the infrastructure was fully expanded. It only takes about 20 to 30 minutes to travel between the cities despite their distance; however, in the extremely rare occasion of a traffic jam, travel could potentially take hours. == Creation and development == Initially, New Pokopoko was created as a one-off location during an AI Dungeon session set in the Uncharted Space. == In-universe history == TBA == Geography == Before it fully developed, New Pokopoko stood atop a flat, rocky plateau with little vegetation. === Major areas and districts === TBA ==== New Pokopoko Main Gate ==== Though there are other gates to the city, the Main Gate is the most popular and well-known, accessible to those coming from the South or those who are leaving the city. It resembles a theme park's gates, and usually has greeters available to visitors at all times of the day; these greeters may be robotic, holographic, or organic. It often is not patrolled by live militia, instead being monitored by machinery and cameras unless there is an emergency of some sort. ==== Rainbow roads ==== The "rainbow roads" of New Pokopoko are the busiest streets in the city. They are heavily marketed to tourists and are often elaborately decorated, even moreso than the rest of the city's streets and buildings. ==== Orbits ==== Due to the unique architecture and technology of New Pokopoko, orbits currently exist nowhere else in the Light Side, and there are only a few in the city at all. An orbit consists of several floating (free-floating or otherwise suspended) buildings, areas, or structures that slowly circle a larger hub platform in the center. Each of the floating platforms in the orbit may be openly accessible, or they may be sealed in a bubble-like, soundproof barrier only permeable via teleportation or other specialized transport. Orbits are most popular with the youth, but are sometimes utilized by those who seek privacy and unique scenery. === Architecture === New Pokopoko is physically walled off from the majority of its border and also is protected by an [[New Pokopoko alchemic barrier|invisible barrier]] that can be readily configured by some Bunjeecorp officials at any time with the use of alchemy and technology combined. This barrier also serves as a screen on which special messages can be projected, or a place for advertisements to be displayed at night alongside the stars. The walls of the city open at specific points in each cardinal direction. The Western wall is exclusively for Bunjeecorp use, as it is connected to a major terrestrial starship port overlooking the Gobu Canyon; it would be a security and safety threat if unauthorized individuals were able to freely access it. The Southern wall opens at two points, but the New Pokopoko Main Gate is the most used opening. The other southern opening is generally reserved for emergencies or for the local militia. Generally, the architecture of New Pokopoko is sleek and modern, utilizing both straight edges and curves to achieve a futuristic look. Many buildings and landmarks are white, blue, or transparent; it also isn't unusual for them to have color-changing parts or be able to reflect light in beautiful, creative ways. ==== Transportation ==== Though it's possible for the most part to walk from place to place, a lot of areas are only accessible through certain modes of transport. For example, some buildings are suspended in mid-air and must be accessed through [NOTE TO SELF: COME UP WITH NAMES FOR THE TELEPORTING PLATFORMS]. Some places also have tubes for people or specialized equipment to shoot through quickly, but this isn't very common due to how much space that the tubes can take up; they are, however, often more cost-effective to create and maintain than [TELEPORTING PLATFORMS]. The [TELEPORTING PLATFORMS] used throughout the city are generally paid for by the government, but will sometimes be owned by businesses or individuals who can afford them. Personal vehicles are very uncommon in New Pokopoko due to the reliability and often cheap prices of public transport options provided by the city or by some businesses. ===== OPTRASYS ===== <small>''See [[OPTRASYS]] for more information.''</small> OPTRASYS (Optimized Transport System) is a travel system jointly developed by Bunjeecorp and HYDRA. It allows for high-speed, nearly entirely automated safe travel between New Pokopoko and Gorgondel for both organic and inorganic matter. It was initially developed for private transport, but was later opened to the public after the NPCC realized the economic and social potential of tourism between the two cities and requested Bunjeecorp to expand the system. In order to legally board OPTRASYS, one must have a Bunjeecorp or HYDRA employee ID, a Gorgondel or New Pokopoko citizen ID, a tourist card, or a temporary OPTRASYS card on hand. Individuals who are not of the mature age of their species or are otherwise unable to travel on their own must travel with someone who is able to legally board OPTRASYS, regardless of whether or not the unable person has the correct cards for travel. === Industries and economy === As do most other locations in === Climate === Prior to New Pokopoko's development into a more modern city, the area's climate was arid and temperate. Nowadays, the weather is largely controlled by a semi-automated system jointly controlled by Bunjeecorp and the New Pokopoko City Council; the weather patterns and seasons are almost never extreme, and are based on the natural climate of non-desert regions of the Light Side. == Government == New Pokopoko is governed by the New Pokopoko City Council (NPCC), which is openly heavily influenced by Bunjeecorp; they almost completely singlehandedly fund the city government and provide for the city's infrastructure themselves, so they are often considered an extension of the NPCC. === Militia === TBA == Culture == TBA '''personal notes for later''' * figure out what everyones deal w unicorns is * how exactly does everyone feel about gorgondel anyway * do people actually like bunjeecorp * alchemy??? do people even know what it is here???? ** kineticism as a whole actually == Trivia == * TBA === Name origin === The phrase "Pokopoko" is entirely meaningless outside of canon, and was chosen on a whim because of the sound. New Pokopoko was created before Old Pokopoko, and the latter derives its name from the former. In canon, however, New Pokopoko derives its name from Old Pokopoko. == Related pages == * [[Gobu Canyon]], a nearby region * [[Gorgondel]], New Pokopoko's sister city * [[Old Pokopoko]], New Pokopoko's predecessor [[Category:Locations]] [[Category:Uncharted Space]] [[Category:Locations in Uncharted Space]] [[Category:Stubs]] 520d1eeb2291be67c505600a321aa7da9d64eefd 593 586 2023-02-17T00:50:45Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=New Pokopoko|header1=Creation and development|label2=Development|data2=November 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Location information|caption=[[BEELETH]]'s concept art from February 2023 (PLACEHOLDER, WILL ADD LATER)|image=[[File:Placeholder.png|200px|Placeholder]]}} <small>''Not to be confused with [[Old Pokopoko]].''</small> '''New Pokopoko''', rarely (but still known to be) referred to solely as '''Pokopoko''', is a populous, bustling city in the [[Light Side]] of the [[Uncharted Space]]. Aside from the advanced technology and countless companies, celebrities, and hotspots in its walls, the city most notably serves as the home of [[Bunjeecorp]]'s largest terrestrial headquarters. It was built over [[Old Pokopoko]]. It is the sister city of [[Gorgondel]], and the two cities share technology and business with each other. They are also two of the easiest non-adjacent [[locations]] in Uncharted Space to travel between, as intercity travel is made more convenient and accelerated with Bunjeecorp and [[HYDRA]]'s [[OPTRASYS|Optimized Transport System]]. It was originally only used for the transport of material, goods, militia, and important figures, but was later expanded to be for the general population once the infrastructure was fully expanded. It only takes about 20 to 30 minutes to travel between the cities despite their distance; however, in the extremely rare occasion of a traffic jam, travel could potentially take hours. == Creation and development == Initially, New Pokopoko was created in November 2022 as a one-off location during an AI Dungeon session set in the Uncharted Space. Many locations, characters, and events from the session were used as inspiration for [[Heavenly Beast|''Heavenly Beast'']]. optimistic dystopia == In-universe history == The [[location]] now known as New Pokopoko is one of the first known places in the Uncharted Space to enter the Light Side. Alchemists that were banished from [[Citadelonia]] or simply wished to practice alchemy in secret travelled northward, splitting into two similar yet distinct groups that would later found Old Pokopoko and Gorgondel. At least five years prior to ''Heavenly Beast'', Bunjeecorp gave the opportunity to a select few New Pokopokans to become cyborgs; two of these citizens were [[C.C.]] and [[Pollyanna]]. === ''Heavenly Beast'' === Along with [[Remudon]] and [[Hypnosen]], the [[Circle of Royal Knights]] temporarily stops at New Pokopoko while hunting down the [[Heaven Dragon]]. They are personally greeted at the New Pokopoko Main Gate by [[Woolf]]. === ''A Wicked Storm Comes'' === While New Pokopoko is not a major location during ''[[A Wicked Storm Comes]]'', certain events do occur at the same time as the story. (ill add them later im very tired of writing an article about a fictional city on and off) == Geography == Before it fully developed, New Pokopoko stood atop a flat, rocky plateau with little vegetation. === Major areas and districts === TBA ==== New Pokopoko Main Gate ==== Though there are other gates to the city, the Main Gate is the most popular and well-known, accessible to those coming from the South or those who are leaving the city. It resembles a theme park's gates, and usually has greeters available to visitors at all times of the day; these greeters may be robotic, holographic, or organic. It often is not patrolled by live militia, instead being monitored by machinery and cameras unless there is an emergency of some sort. ==== Rainbow roads ==== The "rainbow roads" of New Pokopoko are the busiest streets in the city. They are heavily marketed to tourists and are often elaborately decorated, even moreso than the rest of the city's streets and buildings. ==== Orbits ==== Due to the unique architecture and technology of New Pokopoko, orbits currently exist nowhere else in the Light Side, and there are only a few in the city at all. An orbit consists of several floating (free-floating or otherwise suspended) buildings, areas, or structures that slowly circle a larger hub platform in the center. Each of the floating platforms in the orbit may be openly accessible, or they may be sealed in a bubble-like, soundproof barrier only permeable via teleportation or other specialized transport. Orbits are most popular with the youth, but are sometimes utilized by those who seek privacy and unique scenery. === Architecture === New Pokopoko is physically walled off from the majority of its border and also is protected by an [[New Pokopoko alchemic barrier|invisible barrier]] that can be readily configured by some Bunjeecorp officials at any time with the use of alchemy and technology combined. This barrier also serves as a screen on which special messages can be projected, or a place for advertisements to be displayed at night alongside the stars. The walls of the city open at specific points in each cardinal direction. The Western wall is exclusively for Bunjeecorp use, as it is connected to a major terrestrial starship port overlooking the Gobu Canyon; it would be a security and safety threat if unauthorized individuals were able to freely access it. The Southern wall opens at two points, but the New Pokopoko Main Gate is the most used opening. The other southern opening is generally reserved for emergencies or for the local militia. Generally, the architecture of New Pokopoko is sleek and modern, utilizing both straight edges and curves to achieve a futuristic look. Many buildings and landmarks are white, blue, or transparent; it also isn't unusual for them to have color-changing parts or be able to reflect light in beautiful, creative ways. ==== Transportation ==== Though it's possible for the most part to walk from place to place, a lot of areas are only accessible through certain modes of transport. For example, some buildings are suspended in mid-air and must be accessed through [NOTE TO SELF: COME UP WITH NAMES FOR THE TELEPORTING PLATFORMS]. Some places also have tubes for people or specialized equipment to shoot through quickly, but this isn't very common due to how much space that the tubes can take up; they are, however, often more cost-effective to create and maintain than [TELEPORTING PLATFORMS]. The [TELEPORTING PLATFORMS] used throughout the city are generally paid for by the government, but will sometimes be owned by businesses or individuals who can afford them. Personal vehicles are very uncommon in New Pokopoko due to the reliability and often cheap prices of public transport options provided by the city or by some businesses. ===== Optimized Transport System (OPTRASYS) ===== <small>''See [[OPTRASYS]] for more information.''</small> OPTRASYS is a travel system jointly developed by Bunjeecorp and HYDRA. It allows for high-speed, nearly entirely automated safe travel between New Pokopoko and Gorgondel for both organic and inorganic matter. It was initially developed for private transport, but was later opened to the public after the NPCC realized the economic and social potential of tourism between the two cities and requested Bunjeecorp to expand the system. In order to legally board OPTRASYS, one must have a Bunjeecorp or HYDRA employee ID, a Gorgondel or New Pokopoko citizen ID, a tourist card, or a temporary OPTRASYS card on hand. Individuals who are not of the mature age of their species or are otherwise unable to travel on their own must travel with someone who is able to legally board OPTRASYS, regardless of whether or not the unable person has the correct cards for travel. === Industries and economy === TBA === Climate === Prior to New Pokopoko's development into a more modern city, the area's climate was arid and temperate. Nowadays, the weather is largely controlled by a semi-automated system jointly controlled by Bunjeecorp and the New Pokopoko City Council; the weather patterns and seasons are almost never extreme, and are based on the natural climate of non-desert regions of the Light Side. == Government == New Pokopoko is governed by the New Pokopoko City Council (NPCC), which is openly heavily influenced by Bunjeecorp; they almost completely singlehandedly fund the city government and provide for the city's infrastructure themselves, so they are often considered an extension of the NPCC. === Militia === TBA == Culture == TBA '''personal notes for later''' * figure out what everyones deal w unicorns is * how exactly does everyone feel about gorgondel anyway * do people actually like bunjeecorp * alchemy??? do people even know what it is here???? ** kineticism as a whole actually == Trivia == * New Pokopoko was conceptualized ''before'' Old Pokopoko, despite the name. === Name origin === The phrase "Pokopoko" is entirely meaningless outside of canon, and was chosen on a whim because of the sound. In canon, however, New Pokopoko derives its name from Old Pokopoko. == Related pages == * [[Gobu Canyon]], a nearby region * [[Gorgondel]], New Pokopoko's sister city * [[Old Pokopoko]], the past version of New Pokopoko [[Category:Locations]] [[Category:Uncharted Space]] [[Category:Locations in Uncharted Space]] [[Category:Stubs]] 30f26d961fc3ddc63604c4723a60fa4bf06df13f Category:Locations in Uncharted Space 14 287 567 2023-01-26T20:01:45Z BEELETH 2 Created page with "The articles in this category describe locations in the [[Uncharted Space]]. [[Category:Locations]] [[Category:Uncharted Space]]" wikitext text/x-wiki The articles in this category describe locations in the [[Uncharted Space]]. [[Category:Locations]] [[Category:Uncharted Space]] a12a8a1d118e406866201ced9ee7501f36a0ca36 Vast Space 0 247 568 520 2023-01-26T20:06:16Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Vast Space|header1=Creation and development|label2=Development|label3=Creator(s)|data2=Unknown|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Beelethverse * The Multiverse * Everything|label6=Guardian(s)|data6=* [[Origin]] (creator/deity) * [[Cosmic Warden]] (protector)|label7=Sub-Spaces, universes, and timelines|data7=* [[Abstract Space]] * [[Sender Space]] * [[Uncharted Space]] * [[Anomaly Space]] * [[World's End Timeline]] * Several smaller, obscure Spaces}} '''Vast Space''' (also occasionally called the '''Beelethverse''' outside of canon materials) is the place in which all canon or theoretical events occur in [[BEELETH]]'s shared character multiverse. It is overseen by [[Origin]] and at least one [[Cosmic Warden]]; this [[Space]] is split into several smaller Spaces with their own [[deities]], sub-properties, and/or sub-laws. == Creation and development == The Vast Space has existed for as long as the character universe had been split into smaller Spaces, but was not given a name nor recognized for several years. == In-universe history == It is uncertain when the Vast Space was created, but for as long as it has existed, Origin has protected it. == Spatial characteristics == As do all Spaces, Vast Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Vast Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present. === Traits === # Not all of the Vast Space's sub-Spaces need to be created by a deity or an event; some are just naturally created. # Most Spaces and their contained universes have preset outcomes ("timelines"), but if they do not, it is likely the result of a [[spatial anomaly]] of some sort. #* [[World's End Timeline]] is a "Schrodinger's timeline" where [[Sir Ves]]' [[parasite]] gains the means to rewrite the entirety of Vast Space into a single, ruined version that combines a handful of Space elements that survive the event. #* Galfleet Heaven was originally intended to have two outcomes as a result of Volta, who was created as an angel-like villain at the time rather than as a soul-based entity as it exists in the Uncharted Space. # Spaces and their contained universes tend to constantly be occurring in the past, present, and future; they are endlessly "playing", "rewinding", and are also "paused". Time exists incomprehensibly across them and happens at what feels like its own convenience. # Most Spaces and their contained universes are unable to communicate across one another, but there have been exceptions resulting from spatial anomalies or certain natural conditions. # Humans usually exist at some point in each universe, but this is not always the case. === Laws === # Nothing is allowed to exist beyond Vast Space unless it is even more incomprehensibly vast or powerful. This is almost certainly impossible. #* Semi-canon crossovers are permitted if the other universe(s) are explained as being obscure, alternate timelines that diverge at the very beginning of the Vast Space's existence. # All worlds contained in the Vast Space must have the [[Great Gobbler]] and his most notable historical event present in some way. #* He does not have to be human. # The [[Auophian pantheon]], best described as the descendants of Origin, naturally have higher precedence over most other deities. #* Amongst themselves, Origin is the highest-ranked deity, with Abstract second to him. The rest of the pantheon is ranked below Abstract and are equal to one another unless they are demigods, in which they are ranked below them but above average people. #* Abstract is the highest-ranked deity of a sub-Space. The rest of the pantheon are the highest-ranked deities within any universe. # Logical/literal memories are stored in minds, and emotional/implied memories are stored in souls. Logical people have stronger minds, and emotional people have stronger souls. # Living things, regardless of whether they are organic or artificial, normally have minds. Souls, on the other hand, only naturally occur in organic living things. # Loose souls will usually gravitate towards empty or partial vessels, or they will gravitate towards more powerful souls in order to fuse with them. In the event a soul fuses, == Trivia == * The Vast Space is the only deity-protected Space whose name does not reflect that of its associated deity. == Related pages == TBA [[Category:Vast Space]] [[Category:Spaces]] cb47cd399c5fe8b68cbf5f412275ff2c7ab21306 Uncharted Space 0 288 569 2023-01-26T20:14:26Z BEELETH 2 Created page with "{{Infobox|above=Uncharted Space}} '''Uncharted Space''', originally referred to as the '''Uncharted Zone''', is a [[Space]] contained within [[Vast Space]]. There is no [[major deity]] associated with it. == Creation and development == In October of 2021, [[BEELETH]] had a dream in which they explored a then-non-existent character universe referred to as the Uncharted Zone. The basis of what they could remember of the dream's plot ended up becoming part of a new Space'..." wikitext text/x-wiki {{Infobox|above=Uncharted Space}} '''Uncharted Space''', originally referred to as the '''Uncharted Zone''', is a [[Space]] contained within [[Vast Space]]. There is no [[major deity]] associated with it. == Creation and development == In October of 2021, [[BEELETH]] had a dream in which they explored a then-non-existent character universe referred to as the Uncharted Zone. The basis of what they could remember of the dream's plot ended up becoming part of a new Space's lore. == In-universe history == TBA == Spatial characteristics == As do all Spaces, Uncharted Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Uncharted Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present. === Traits === # TBA === Characteristics === # TBA == Trivia == * TBA == Related pages == * TBA [[Category:Uncharted Space]] [[Category:Spaces]] [[Category:Stubs]] 584208fd02bb5621b0e2ccff14982d24b55cce48 570 569 2023-01-26T22:27:07Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Uncharted Space|header1=Creation and development|label2=Development|data2=TBA|label3=Creator(s)|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Uncharted Zone|label6=Guardian(s)|data6=None}} The '''Uncharted Space''', originally mainly referred to as the '''Uncharted Zone''', is a [[Space]] contained within [[Vast Space]]. There is no [[major deity]] associated with it. == Creation and development == In October of 2021, [[BEELETH]] had a dream in which they explored a then-non-existent character universe referred to as the Uncharted Zone. The basis of what they could remember of the dream's plot ended up becoming part of a new Space's lore. == In-universe history == TBA == Spatial characteristics == As do all Spaces, Uncharted Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Uncharted Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present. === Traits === # [[Souls]] are a very prominent part of the Uncharted Space for a variety of reasons (depending on the area). === Laws === # All laws of the Vast Space also apply to the Uncharted Space whenever possible. # There is a "known world" (Light Side) and an "unknown world" (Dark Side). The Light Side is continuously expanding, but there isn't a consistently proven way to speed it up or slow it down, let alone know which direction it will majorly expand in next. # The Dark Side is unsafe to enter or be near. There have been attempts to enter and explore it, but no adventurers have returned. == Trivia == * As of January 2023, the Uncharted Space is the largest thing in the Vast Space to have been inspired by a dream. * The Uncharted Space is the second subsection of Vast Space to have ever been referred to as a Zone. ** The first Zone was the [[Calamity Zone]], which is now of dubious canon. == Related pages == * [[Calamity Zone]] [[Category:Uncharted Space]] [[Category:Spaces]] [[Category:Stubs]] 8063ad63f06df5139d07140379b48ae0f73c15b4 Category:Characters 14 289 571 2023-01-26T22:30:01Z BEELETH 2 Created page with "On this wiki, characters are the people represented in stories that take place in stories that may or may not be canon to the Vast Space; they may be based on real people, or may be purely fictional. There are several types of characters as well, like [[sonas]]." wikitext text/x-wiki On this wiki, characters are the people represented in stories that take place in stories that may or may not be canon to the Vast Space; they may be based on real people, or may be purely fictional. There are several types of characters as well, like [[sonas]]. 9ed48da63335a57215beb2073ecf8ed9b968f626 Beeleth 0 290 573 2023-01-27T19:49:59Z BEELETH 2 Created redirect wikitext text/x-wiki #REDIRECT [[King Beeleth]] 9bfa365dd4a5e6fe3d7ed91e668364015e9141e2 File:Cc.png 6 291 574 2023-01-27T19:58:56Z BEELETH 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 John 0 292 575 2023-01-27T20:01:50Z BEELETH 2 Redirected page to [[John Blunts]] wikitext text/x-wiki #REDIRECT [[John Blunts]] f05786b46e917889f8f5548cd34236d20ab669d0 C.C. 0 293 577 2023-01-27T22:22:34Z BEELETH 2 Created page with "{{Infobox|above=C.C.|image=[[File:Cc.png|200px|C.C.]]|header1=Creation and development|label2=Development|data2=Uncertain|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)}} '''C.C.''', also known as '''California Pettibon Michaels''', is a [[human]] who was turned into a [[cyborg]] by [[Bunjeecorp]]. == Personality == He's very shy. == Appearance == C.C. is a human-cyborg. === Other design notes === TBA == Creation and development == TBA == In-universe histor..." wikitext text/x-wiki {{Infobox|above=C.C.|image=[[File:Cc.png|200px|C.C.]]|header1=Creation and development|label2=Development|data2=Uncertain|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)}} '''C.C.''', also known as '''California Pettibon Michaels''', is a [[human]] who was turned into a [[cyborg]] by [[Bunjeecorp]]. == Personality == He's very shy. == Appearance == C.C. is a human-cyborg. === Other design notes === TBA == Creation and development == TBA == In-universe history == TBA == Abilities == TBA == Gallery == ''<small>[[C.C./Gallery|Click here to see C.C.'s full gallery.]]</small>'' === Recognized palettes === TBA === Reference images === TBA == Trivia == * TBA === Name origins === TBA == Related pages == * TBA ceebc8058caf0f8a16aa8f113832fafefeb9bea9 578 577 2023-01-27T22:30:28Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=C.C.|image=[[File:Cc.png|200px|C.C.]]|header1=Creation and development|label2=Development|data2=Uncertain|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)}} '''C.C.''', also known as '''California Pettibon Michaels''', is a [[human]] who was turned into a [[cyborg]] by [[Bunjeecorp]]. == Personality == He's very shy. == Appearance == C.C. is a human-cyborg. === Other design notes === TBA == Creation and development == TBA == In-universe history == TBA == Abilities == TBA == Gallery == ''<small>[[C.C./Gallery|Click here to see C.C.'s full gallery.]]</small>'' === Recognized palettes === TBA === Reference images === TBA == Trivia == * TBA === Name origins === TBA == Related pages == * TBA [[Category:Characters]] [[Category:Humans]] [[Category:Cyborgs]] [[Category:Uncharted Space]] [[Category:Bunjeecorp]] a309138b2232b4ac568b2af92c7a6f66de1478b4 591 578 2023-02-14T23:15:54Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=C.C.|image=[[File:Cc.png|200px|C.C.]]|header1=Creation and development|label2=Development|data2=Uncertain|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)}} '''C.C.''', also known as '''California Pettibon Michaels''', is a [[human]] who was turned into a [[cyborg]] as part of an experiment by [[Bunjeecorp]] alongside his friend [[Pollyanna]] at least five years prior to the beginning of ''[[Heavenly Beast]]''. He now works for the corporation as a company propaganda agent, but wishes he could return to life before he was converted. == Personality == He's very shy. == Appearance == C.C. is a human-cyborg of slightly shorter than average stature; he has short, somewhat curly cyan hair and a deathly pale complexion. A cowlick emerges along where his hair is parted on the right side. His eyes are cyan as well and have a straight, horizontal line and bar across the irises that resemble a stylized shadow. His left eye is often covered with a patch, and he wears ruffled ear coverings. === Other design notes === C.C. is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * His metal casing is purple, and covers up everything below his head. He sometimes wears white gloves or white fullbody suits to cover up his metal. ** His internal metal color is generally grayish. * His ear coverings are optional, and cover up metallic nubs where his ears would be. == Creation and development == TBA == In-universe history == TBA == Abilities == # '''Being nearly immortal:''' As he is no longer technically alive, C.C. is unable to die from natural causes. He will continue to live for as long as his internal is maintained. #* He can safely enter stasis if he is low on power. #* Decomposition and aging of his organic parts is impossible as long he has enough nanonectar flowing through his . # == Gallery == ''<small>[[C.C./Gallery|Click here to see C.C.'s full gallery.]]</small>'' === Recognized palettes === TBA === Reference images === TBA == Trivia == * TBA === Name origins === TBA == Related pages == * TBA [[Category:Characters]] [[Category:Humans]] [[Category:Cyborgs]] [[Category:Uncharted Space]] [[Category:Bunjeecorp]] [[Category:Stubs]] bff9dbf4ff1ec4ea42280b7cf2d950862a5a8430 594 591 2023-02-17T00:50:50Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=C.C.|image=[[File:Cc.png|200px|C.C.]]|header1=Creation and development|label2=Development|data2=Uncertain|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)}} '''C.C.''', also known as '''California Pettibon Michaels''' or '''Closed Captions''', is a [[human]] who was turned into a [[cyborg]] as part of an experiment by [[Bunjeecorp]] alongside his friend [[Pollyanna]] at least five years prior to the beginning of ''[[Heavenly Beast]]''. He now works for the corporation as a company propaganda agent, but wishes he could return to life before he was converted. == Personality == He is introverted and passive, failing to assert himself when pushed around; Polly is often the one who stands up for him, though [[Kors]] filled this role while C.C. was still human. == Appearance == C.C. is a human-cyborg of slightly shorter than average stature; he has short, somewhat curly cyan hair and a deathly pale complexion. A cowlick emerges along where his hair is parted on the right side. His eyes are cyan as well and have a straight, horizontal line and bar across the irises that resemble a stylized shadow. His left eye is often covered with a patch, and he wears ruffled ear coverings. === Other design notes === C.C. is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * His metal casing is purple, and covers up everything below his head. He sometimes wears white gloves or white fullbody suits to cover up his metal. ** His internal metal color is generally grayish. * His ear coverings are optional, and cover up metallic nubs where his ears would be. == Creation and development == C.C. was created sometime in the mid-2010s by BEELETH, and has seen varied use since his creation. Though his history and role in each story has changed many times, his basic personality and much of his design has been retained over the years. === Initial incarnation === Prior to the creation of the [[Vast Space]] and the majority of stories that would come to take place within it, C.C. was originally a JoJo's Bizarre Adventure OC. This incarnation of him was younger and was fully human; he was an orphan who was taken under fellow orphan Polly's wing, and was taught to live on the streets and avoid getting into trouble. He was opposed by Kors, who was then known as Kosame, as well as his various underlings. C.C.'s stand was === Galfleet Heaven incarnation === TBA === Current incarnation === TBA == In-universe history == TBA == Connections == === Kors === TBA === Pollyanna === TBA === Mill === TBA == Abilities == # '''Being nearly immortal:''' As he is no longer technically alive, C.C. is unable to die from natural causes. He will continue to live for as long as his internal mechanisms are maintained. #* He can safely enter stasis if he is low on power. He can regain power by eating food, absorbing energy, and/or #* Though his casing is about as strong as those of the [[Special Models]], it can still be damaged. He was not optimized for combat or durability beyond everyday activity. #* Decomposition and aging of his organic parts is impossible as long he has enough [[nanonectar]] cycling through his system. #'''Having enhanced senses and brain power:''' TBA #*He is also technically stronger now that he is a cyborg, but does not often utilize his strength solely because he #'''Being able to remotely access (and be accessed by) other machinery/devices:''' TBA == Gallery == ''<small>[[C.C./Gallery|Click here to see C.C.'s full gallery.]]</small>'' === Recognized palettes === TBA === Reference images === TBA == Trivia == * TBA === Name origins === TBA == Related pages == * TBA [[Category:Characters]] [[Category:Humans]] [[Category:Cyborgs]] [[Category:Uncharted Space]] [[Category:Bunjeecorp]] [[Category:Stubs]] 6635ab2cfc1e46144fb7cbd820807099c378a8d7 File:Origin2.png 6 294 579 2023-01-31T23:44:41Z BEELETH 2 2023 redesign of Origin wikitext text/x-wiki == Summary == 2023 redesign of Origin 72ceb2e2138199050de52b649b4b5e80e54346cb Origin 0 295 580 2023-02-01T00:25:13Z BEELETH 2 Created page with "{{Infobox|above=Origin|image=[[File:Origin2.png|200px|Origin]]|header1=Creation and development}} '''Origin''' is the name often used to refer to the original Auophian god, who reigns over the [[Vast Space]] as a whole. Most everything within the Vast Space can be traced back to him in some way. == Personality == TBA == Appearance == By default, Origin appears as an incomprehensibly large monster with characteristics somewhat comparable to a variety of animals. A sta..." wikitext text/x-wiki {{Infobox|above=Origin|image=[[File:Origin2.png|200px|Origin]]|header1=Creation and development}} '''Origin''' is the name often used to refer to the original Auophian god, who reigns over the [[Vast Space]] as a whole. Most everything within the Vast Space can be traced back to him in some way. == Personality == TBA == Appearance == By default, Origin appears as an incomprehensibly large monster with characteristics somewhat comparable to a variety of animals. A star-like object known as the [[Origin point]] floats above his head between his antlers. === Biology and physical function === Past the thick but almost perfectly clear membrane that protects his internal organs, [[Origin ichor]] flows freely. His innards are also able to move around to an extent, as there is not much holding them in place; in fact, he sheds his organs regularly to grow them once more. Everything he expels from his body becomes a part of space and is imbued with a fraction of his power. The function of each of his organs is not entirely known, but they can all be observed from outside his body. * The cloud body is large, white organ (or possibly an organ system) that can visually be compared to the trim of a fur coat, though it has cloud-like properties hence the name. It is largest around his neck-area and the lower part of his body, but trails around the front of his body along the edge between the inside and outside of his membrane. The organ is partially exposed externally, and it is constantly shedding thin layers that follow behind Origin as he moves throughout Vast Space. These layers become nebulae when they are fully separated from him. ** This can be considered a reproductive organ, as greater spatial deities have the potential to be created from nebulae. * Throughout his body are small, pink pockets and glands full of [[godsorrow]]; this is the second type of ichor only Origin is known to produce. The two godsorrow glands at the base of his tails are where the majority of his body's godsorrow is generated, and he is able to expel it through his stingers if he chooses. Some large drops of godsorrow float around his upper cloud body, tail godskulls, and antlers. His skeletal structure is much less intricate than his specialized organs, and he noticeably lacks a lot of the bones that organic beings often have. * His cranial [[godskull]], unlike other Auophian deities, is completely dark. The "spine" that drapes loosely below his head is made of the same type of dark godskull. * There are no bones in the rest of his body save for the ovular godskulls on his tails, the pincers on the tail ends, and the forseps below them. * They are not considered to be connected to his body, but at least eight empty godskulls surround him at all times. He is able to drop them if he pleases, but he always replaces the one he discards. === Other design notes === TBA == Creation and development == TBA == In-universe history == TBA == Abilities == TBA == Gallery == === Recognized palettes === TBA === Reference images === TBA == Trivia == * Origin is the only deity to reign a Space that does not contain its associated deity's name. === Name origin === He is often referred to as Origin because he was the first being to exist in the Vast Space and likely created it. == Related pages == * [[Vast Space]] [[Category:Characters]] [[Category:Vast Space]] [[Category:Deities]] [[Category:Greater deities]] [[Category:Stubs]] e2115d0f4279c991d21f69d00388af7a7ae90200 583 580 2023-02-01T17:42:39Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Origin|image=[[File:Origin2.png|200px|Origin]]|header1=Creation and development|label2=Development|data2=* November 2020 (created) * January 2022 (redesigned)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Unconfirmed|label6=Other names|data6=* Origin * Rykha'uophi-konu}} '''Origin''', known as '''Rykha'uophi-konu''' by the [[Auophian]] [[eyes]], is the [[deity]] who reigns over the [[Vast Space]] as a whole. Most everything within the Vast Space can be traced back to him in some way; because of this, he is considered to be the creator of everything that did not simply will itself into existence. In relation to the [[Auophian pantheon]], he is considered the primary creation deity. It is important to note that most other beings anywhere in the Vast Space, regardless of whether or not they are deities, are unaware of Origin's existence unless they have the [[sorrowful gaze]]. [[Abstract]] is often mistaken by those with less gazing ability to be the primary creation deity, as he also has the ability to create from [[ichor]] and is closer to all other [[Spaces]] than Origin is. == Personality == It is hard to discern what kind of personality Origin has. === Voice === Origin does not speak, but rather perpetually emits sound comparable to whalesong, humans weeping, windchimes, and metallic dragging all at once. This is commonly referred to as him "growling". In the virtually impossible scenario he is to feel threatened in any way, he will "roar", in which he will vocalize a deafening noise best described as billions of humans and creatures shrieking and crying all at once. == Appearance == By default, Origin appears as an incomprehensibly large monster with characteristics somewhat comparable to a variety of animals. The majority of his body's surface is bioluminescent or reflectant to some extent. A star-like object known as the [[Origin point]] floats above his head between his antlers. === Biology and physical function === Past the thick but almost perfectly clear membrane that protects his internal organs, [[Origin ichor]] flows freely. His innards are also able to move around to an extent, as there is not much holding them in place; in fact, he sheds his organs regularly to grow them once more. Everything he expels from his body becomes a part of space and is imbued with a fraction of his power. The function of each of his organs is not entirely known, but they can all be observed from outside his body. * The cloud body is large, white organ (or possibly an organ system) that can visually be compared to the trim of a fur coat, though it has cloud-like properties hence the name. It is largest around his neck-area and the lower part of his body, but trails around the front of his body along the edge between the inside and outside of his membrane. The organ is partially exposed externally, and it is constantly shedding thin layers that follow behind Origin as he moves throughout Vast Space. These layers become nebulae when they are fully separated from him. ** This can be considered a reproductive organ, as greater spatial deities have the potential to be created from nebulae. * Throughout his body are small, pink pockets and glands full of [[godsorrow]]; this is the second type of ichor only Origin is known to produce. The two godsorrow glands at the base of his tails are where the majority of his body's godsorrow is generated, and he is able to expel it through his stingers if he chooses. Some large drops of godsorrow float around his upper cloud body, tail godskulls, and antlers. His skeletal structure is much less intricate than his specialized organs, and he noticeably lacks a lot of the bones that organic beings often have. * His cranial [[godskull]], unlike other Auophian deities, is completely dark. The "spine" that drapes loosely below his head is made of the same type of dark godskull. * There are no bones in the rest of his body save for the ovular godskulls on his tails, the pincers on the tail ends, and the forseps below them. * They are not considered to be connected to his body, but at least eight empty godskulls surround him at all times. He is able to drop them if he pleases, but he always replaces the one he discards. === Other design notes === TBA == Creation and development == TBA == In-universe history == TBA == Abilities == # TBA == Gallery == === Recognized palettes === TBA === Reference images === TBA == Trivia == * Origin is the only deity to reign over a Space that does not contain its associated deity's name in its title. === Name origins === He is often referred to as Origin because he was the first being to exist in the Vast Space and likely created it. His Auophian name, Rykha'uophi-konu, can be translated from the Auophian language as "the cherished blooming-one beyond us". Rykhaa means "cherished", and as it is followed by another "a" sound, it is combined into an "a-stop". Auophi can be interpreted as "blooming-one" but is generally left untranslated in most contexts as it is the civilization's name, and a more accurate, albeit rougher, translation of the word would be "person of flowers". The Auophian deities are often referred to as fellow Auophian people, albeit with a higher rank and higher reverance. The -konu suffix is an honorific reserved only for certain deities that reside beyond [[Light side|the known world]], and Origin shares this honorific with Abstract. == Related pages == * [[Vast Space]] [[Category:Characters]] [[Category:Vast Space]] [[Category:Deities]] [[Category:Greater deities]] [[Category:Stubs]] 7583158d80756ebaa1250074112895e16081a301 584 583 2023-02-10T21:32:55Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Origin|image=[[File:Origin2.png|200px|Origin]]|header1=Creation and development|label2=Development|data2=* November 2020 (created) * January 2022 (redesigned)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Unconfirmed|label6=Other names|data6=* Origin * Rykha'uophi-konu}} '''Origin''', known as '''Rykha'uophi-konu''' by the [[Auophian]] [[eyes]], is the [[deity]] who reigns over the [[Vast Space]] as a whole. Most everything within the Vast Space can be traced back to him in some way; because of this, he is considered to be the creator of everything that did not simply will itself into existence. In relation to the [[Auophian pantheon]], he is considered the primary creation deity. It is important to note that most other beings anywhere in the Vast Space, regardless of whether or not they are deities, are unaware of Origin's existence unless they have the [[sorrowful gaze]]. [[Abstract]] is often mistaken by those with less gazing ability to be the primary creation deity, as he also has the ability to create from [[ichor]] and is closer to all other [[Spaces]] than Origin is. == Personality == It is hard to discern what kind of personality Origin has. === Voice === Origin does not speak, but rather perpetually emits sound comparable to whalesong, humans weeping, windchimes, and metallic dragging all at once. This is commonly referred to as him "growling". In the virtually impossible scenario he is to feel threatened in any way, he will "roar", in which he will vocalize a deafening noise best described as billions of humans and creatures shrieking and crying all at once. == Appearance == By default, Origin appears as an incomprehensibly large monster with characteristics somewhat comparable to a variety of animals. The majority of his body's surface is bioluminescent or reflectant to some extent. A star-like object known as the [[Origin point]] floats above his head between his antlers. === Biology and physical function === Past the thick but almost perfectly clear membrane that protects his internal organs, [[Origin ichor]] flows freely. His innards are also able to move around to an extent, as there is not much holding them in place; in fact, he sheds his organs regularly to grow them once more. Everything he expels from his body becomes a part of space and is imbued with a fraction of his power. The function of each of his organs is not entirely known, but they can all be observed from outside his body. * The cloud body is large, white organ (or possibly an organ system) that can visually be compared to the trim of a fur coat, though it has cloud-like properties hence the name. It is largest around his neck-area and the lower part of his body, but trails around the front of his body along the edge between the inside and outside of his membrane. The organ is partially exposed externally, and it is constantly shedding thin layers that follow behind Origin as he moves throughout Vast Space. These layers become nebulae when they are fully separated from him. ** This can be considered a reproductive organ, as greater spatial deities have the potential to be created from nebulae. * Throughout his body are small, pink pockets and glands full of [[godsorrow]]; this is the second type of ichor only Origin is known to produce. The two godsorrow glands at the base of his tails are where the majority of his body's godsorrow is generated, and he is able to expel it through his stingers if he chooses. Some large drops of godsorrow float around his upper cloud body, tail godskulls, and antlers. His skeletal structure is much less intricate than his specialized organs, and he noticeably lacks a lot of the bones that organic beings often have. * His cranial [[godskull]], unlike other Auophian deities, is completely dark. The "spine" that drapes loosely below his head is made of the same type of dark godskull. * There are no bones in the rest of his body save for the ovular godskulls on his tails, the pincers on the tail ends, and the forseps below them. * They are not considered to be connected to his body, but at least eight empty godskulls surround him at all times. He is able to drop them if he pleases, but he always replaces the one he discards. === Other design notes === TBA == Creation and development == TBA == In-universe history == TBA == Abilities == # TBA == Gallery == === Recognized palettes === TBA === Reference images === TBA == Trivia == * Origin is the only deity to reign over a Space that does not contain its associated deity's name in its title. * He is also the only deity known to produce two types of ichor. === Name origins === He is often referred to as Origin because he was the first being to exist in the Vast Space and likely created it. His Auophian name, Rykha'uophi-konu, can be translated from the Auophian language as "the cherished blooming-one beyond us". Rykhaa means "cherished", and as it is followed by another "a" sound, it is combined into an "a-stop". Auophi can be interpreted as "blooming-one" but is generally left untranslated in most contexts as it is the civilization's name, and a more accurate, albeit rougher, translation of the word would be "person of flowers". The Auophian deities are often referred to as fellow Auophian people, albeit with a higher rank and higher reverance. The -konu suffix is an honorific reserved only for certain deities that reside beyond [[Light side|the known world]], and Origin shares this honorific with Abstract. == Related pages == * [[Vast Space]] [[Category:Characters]] [[Category:Vast Space]] [[Category:Deities]] [[Category:Greater deities]] [[Category:Stubs]] 68b0b295453ecac14009fd3e76952619cb26fa8b Godskull 0 296 581 2023-02-01T00:53:14Z BEELETH 2 Created page with "{{Infobox|above=Godskull}} '''Godskull''' is a type of material only naturally found in the skeletal structure of Auophian deities; each deity has a different type of godskull associated with them, but they are all often simply referred to as godskull unless it is important enough to make a distinction. Despite their name, godskulls do not exclusively refer to the cranial structure of the deities, but instead refer to all bone-like structures that exist in, on, or aroun..." wikitext text/x-wiki {{Infobox|above=Godskull}} '''Godskull''' is a type of material only naturally found in the skeletal structure of Auophian deities; each deity has a different type of godskull associated with them, but they are all often simply referred to as godskull unless it is important enough to make a distinction. Despite their name, godskulls do not exclusively refer to the cranial structure of the deities, but instead refer to all bone-like structures that exist in, on, or around them that are made of the same material. == Properties == The visual characteristics and textures of godskull vary depending on which deity it is sourced from as well as what part of their body it originates from. An unused, empty cranial godskull will appear white and may have completely darkened sockets or openings. Auophian deities may spawn from empty godskulls, or may create their own as they spawn from [[Origin ichor]]. Regardless, they will often totally change the structure and properties of the godskull they adorn/contain. === Physical properties === In the [[Uncharted Space]], godskull is known by warriors, collectors, and anyone else with an eye for rare material for its astounding strength and anti-fae characteristics. It's nearly impossible to come by, however, due to the fact that most deities prefer to keep their skeleton intact and most do not have any reason to shed any of their godskull. Godskull can only be cut by godskull, so given its rarity, it is almost never reshaped from the condition it is found in but is instead repurposed into whatever tool, adornment, or decoration its owner desires; it's also important to note that most cranial godskulls are much too large for anyone human-sized to wear, so it must be used creatively. Wherever a cranial godskull is found, it is often left in place and turned into a home that is able to withstand all types of weather and attacks. === Kinetic properties === TBA ==== Alchemic properties ==== TBA == In-universe history == TBA [[Category:Materials]] [[Category:Stubs]] 6ccb19cd0090001bea8070f1d93df2f9e264d929 Godskulls 0 297 582 2023-02-01T00:53:39Z BEELETH 2 Redirected page to [[Godskull]] wikitext text/x-wiki #REDIRECT [[Godskull]] 496376f076f3655369bd74b54cb8cd5e7504dab9 Category:Locations 14 298 585 2023-02-13T18:41:47Z BEELETH 2 Created page with "'''Locations''' are places throughout [[Vast Space]] that are generally notable enough in some way to be granted their own names, whether they are officially recognized or merely just common; these places may be general and vague in terms of the location's spread, or they may have obvious boundaries (walls, bodies of water, geological structures, etc.) that are used as markers for the location's end. These locations may also merely be [[landmarks]], meaning they are rec..." wikitext text/x-wiki '''Locations''' are places throughout [[Vast Space]] that are generally notable enough in some way to be granted their own names, whether they are officially recognized or merely just common; these places may be general and vague in terms of the location's spread, or they may have obvious boundaries (walls, bodies of water, geological structures, etc.) that are used as markers for the location's end. These locations may also merely be [[landmarks]], meaning they are recognizable structures that aren't entirely a region but just a point of reference or importance. 1689fd636ae6e38ec751b6bd4d3c5f207dca51bc MediaWiki:Robots.txt 8 299 587 2023-02-14T20:26:04Z BEELETH 2 we can now be searched devioius emoji wikitext text/x-wiki User-agent: * Allow: /wiki/ Disallow: /wiki/Template: Disallow: /wiki/Module: 9fcf7150b96652a1bec100a9ad2d3b33759cdc13 Palette 0 300 588 2023-02-14T20:53:04Z BEELETH 2 Redirected page to [[Palettes]] wikitext text/x-wiki #REDIRECT [[Palettes]] 2ea169c76c557d718a5912e474c61ff3e2af465d File:Men.png 6 301 589 2023-02-14T22:05:33Z BEELETH 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 CC 0 302 592 2023-02-14T23:16:22Z BEELETH 2 Redirected page to [[C.C.]] wikitext text/x-wiki #REDIRECT [[C.C.]] cbc5d86576091a5421f93ed9ef2c341fd4eff613 Beastman 0 303 597 2023-03-14T20:40:08Z BEELETH 2 Redirected page to [[Beastmen]] wikitext text/x-wiki #REDIRECT [[Beastmen]] b0ed368aefb5670c3889cd8ebf198fa79c85c094 Beastmen 0 304 598 2023-03-14T20:40:59Z BEELETH 2 created page wikitext text/x-wiki placeholder text [[Category:Species]] [[Category:Stubs]] 2acbd63bdc36090405907d178edf3be22684a1da 612 598 2023-04-03T15:48:48Z BEELETH 2 wikitext text/x-wiki '''Beastmen''' are a typically bipedal, widely varied race. Generally, they only exist in the Uncharted Space. [[Category:Species]] [[Category:Stubs]] [[Category:Beastmen]] 577d0eaad755bffbfd9c30464850c7203f1043ac 614 612 2023-04-03T15:56:28Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Beastmen}} '''Beastmen''' are a species native to the [[Uncharted Space]]. However, they may potentially appear elsewhere in [[Vast Space]] in the case of a [[spatial anomaly]] or [[coincidental convergence]]. They often resemble or have the characteristics of animals or other beasts to varying degrees based on their heritage and/or environment. As a rule of thumb, a beastman will generally have improved physical strength, [[kinetic]] potential, and senses compared to [[humans]] and beasts. [[Category:Species]] [[Category:Stubs]] [[Category:Beastmen]] 4ba5c1f5a38f9c84cf64ba9e7125dae58f5bb12a 615 614 2023-04-03T22:39:11Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Beastmen}} '''Beastmen''' are a species native to the [[Uncharted Space]]. However, they may potentially appear elsewhere in [[Vast Space]] in the case of a [[spatial anomaly]] or [[coincidental convergence]]. They often resemble or have the characteristics of animals or other beasts to varying degrees based on their heritage and/or environment. As a rule of thumb, a beastman will generally have improved physical strength, [[kinetic]] potential, and senses compared to [[humans]] and beasts. == In-universe history == TBA == Species merits == The individuals within any species will vary, so this list is not to be taken at face value. Rather, this is a general representation of what beastmen are biologically predisposed to, or are otherwise known for. === Strengths === * Compared to humans and beasts, beastmen tend to have extra or improved: *# '''Physical strength:''' More animalistic beastmen will often have increased physical strength, especially in emotional situations. *# '''Kinetic potential:''' Not every beastman is capable of natural or learned kineticism, but it is more common for them to develop these abilities. Common forms of naturally developed kineticism in beastmen are (WILL ADD LATER). *# '''Senses:''' TBA * TBA === Weaknesses === * For better or for worse, beastmen are more susceptible to getting caught in their own emotions as well as others' emotions. * TBA === Other species-related notes === TBA == Trivia == * TBA === Etymology === "Beastman" is a combination of "beast" and "man", much like the species itself. Within the Vast Space's continuity, it is entirely used in a gender-neutral context, but "beastwoman" is still an acceptable term. There is no currently designated non-binary term for the species and there are no plans to coin one, as it has not been deemed necessary (though this may change in the future). == Related pages == * TBA [[Category:Species]] [[Category:Stubs]] [[Category:Beastmen]] [[Category:Uncharted Space]] b7b1a83061bc550a7b878063583ec9841958fa75 Category:Species 14 305 599 2023-03-14T20:50:51Z BEELETH 2 created page wikitext text/x-wiki Species are the largest possible groups of organisms that are capable of producing viable offspring. Subspecies are beneath species in the taxonomic hierarchy, and are capable of interbreeding within the same species category but tend to not do so, choosing to reproduce with the same subspecies instead. For simplicity's sake, a subspecies should not be given its own page unless they are notably distinct from their encompassing species or from other subspecies in the same species category. 310ccbeab0bfd9875e798c4376b8d74b1afd9884 601 599 2023-03-14T20:53:23Z BEELETH 2 wikitext text/x-wiki '''Species''' are the largest possible groups of organisms that are capable of producing viable offspring. Subspecies are beneath species in the taxonomic hierarchy, and are capable of interbreeding within the same species category but tend to not do so, choosing to reproduce with the same subspecies instead. Generally, species on this wiki are fictional or partially fictionalized versions of real-world species. Their canonicity varies. For simplicity's sake, a subspecies should not be given its own page unless they are notably distinct from their encompassing species or from other subspecies in the same species category. 19d81e52df84a728dc4529cdc84ebea38b7ec85b 602 601 2023-03-14T20:55:26Z BEELETH 2 wikitext text/x-wiki '''Species''' are the largest possible groups of organisms that are capable of producing viable offspring. Subspecies are beneath species in the taxonomic hierarchy, and are capable of interbreeding within the same species category but tend to not do so, choosing to reproduce with the same subspecies instead. Generally, species on this wiki are fictional or partially fictionalized versions of real-world species. Their canonicity varies. A species may be listed as a category if they appear very frequently within the Vast Space or beyond. For simplicity's sake, a ''subspecies'' should not be given its own page unless they are notably distinct from their encompassing species or from other subspecies in the same species category. 508785597eddd4809736dc106a08e70e35a00c68 Humans 0 306 600 2023-03-14T20:51:28Z BEELETH 2 created page wikitext text/x-wiki placeholder text [[Category:Species]] [[Category:Stubs]] 2acbd63bdc36090405907d178edf3be22684a1da Category:Humans 14 307 603 2023-03-14T20:56:03Z BEELETH 2 Created page with "See the page for [[humans]]. [[Category:Species]]" wikitext text/x-wiki See the page for [[humans]]. [[Category:Species]] eef413fe26f2b1534a384d95d993ecf207e874a4 Category:Furries 14 308 604 2023-03-14T21:28:15Z BEELETH 2 Created page with "'''"Furries"''' is used on this wiki as a catch-all term for [[characters]] with (at least) bipedal, anthropomorphic animal-based designs that are noticeably non-human, generally in their head area at the very minimum (if they have a head). A character can also be described as a furry if they have a distinctly, mostly (if not entirely) animal-like body. The rules are somewhat vague but it will generally be clear to the viewer if a character can or cannot be described as..." wikitext text/x-wiki '''"Furries"''' is used on this wiki as a catch-all term for [[characters]] with (at least) bipedal, anthropomorphic animal-based designs that are noticeably non-human, generally in their head area at the very minimum (if they have a head). A character can also be described as a furry if they have a distinctly, mostly (if not entirely) animal-like body. The rules are somewhat vague but it will generally be clear to the viewer if a character can or cannot be described as a furry. The term "furry" has also been used to describe several [[species]] and taxonomic groups, including but not limited to: * [[beastmen]] * [[civil animals]] While furries are not technically established to be a species in the Vast Space, this exists as a category anyway simply because it's an easy category to place characters in. There are more specific sub-categories that work for more accurate classification. [[Category:Species]] dae0f4d963cd2a083569fbb37304073ee5892765 Category:Beastmen 14 309 605 2023-03-14T21:29:44Z BEELETH 2 Created page with "placeholder text [[Category:Species]] [[Category:Furries]] [[Category:Uncharted Space]]" wikitext text/x-wiki placeholder text [[Category:Species]] [[Category:Furries]] [[Category:Uncharted Space]] d4d31f4c5419be646f9200bf0386df6952498536 613 605 2023-04-03T15:49:42Z BEELETH 2 wikitext text/x-wiki A list of all [[beastmen]] throughout [[Vast Space]]. [[Category:Species]] [[Category:Furries]] [[Category:Uncharted Space]] c08e1b28dc1b694ae692f30e7578138fca59db74 Halberd (character) 0 166 606 596 2023-03-14T21:43:47Z BEELETH 2 wikitext text/x-wiki {{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}<small>''Not to be confused with [[BEELETH]].''</small>{{In<br>{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al * Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}'''Halberd''' (occasionally called '''Halberd White''' or '''Halberd Freezeray''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. He is not canon to [[Vast Space]]. ==Personality== [[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]] As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky. He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly. Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling. ==Appearance== By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. ===Other design notes=== Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. *His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". *He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. **Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. **As long as he isn't doing a lot of walking, he's fine with shorter shorts too. *Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. *In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves. *His eye color is brown. ==Creation and development== [[File:Men.png|alt=A cartoony, low-quality drawing of Halberd staring vacantly into the distance. In a floating thought bubble coming from his head is the text "Men (heart symbol)" followed by "and women" in smaller text.|thumb|149x149px|Things have certainly changed]] His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. In February 2023, he began being drawn with a more simple, shape-y design on occasion. ==Abilities== Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. #'''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #*As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God. ==Gallery== ''<small>[[Halberd (character)/Gallery|Click here to see Halberd's full gallery.]]</small>'' ===Recognized palettes === <gallery> File:Halwhite.png|"White hair" palette File:Halbrown.png|"Brown hair" palette </gallery> ===Reference images === TBA ==Trivia== *His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. **These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men. **A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. *BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. ===Name origin === Halberds are a type of weapon, and BEEL likes weapon names. Freezerays are also weapons. White as a surname is a reference to a voice line from Toontown Online spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. However, he is not really a doctor. ==Related pages== *[[BEELETH]], Hal's real-world counterpart *[[BEELETH's sona]], another representation of BEELETH [[Category:Sonas]] [[Category:Characters]] [[Category:LGBT+ characters]] [[Category:Non-canon]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]] [[Category:Stubs]] ff4605b36e996450dc82a338b45f6e04070b00d4 607 606 2023-03-14T21:44:04Z BEELETH 2 wikitext text/x-wiki {{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}<small>''Not to be confused with [[BEELETH]].''</small><br>{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al * Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}'''Halberd''' (occasionally called '''Halberd White''' or '''Halberd Freezeray''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. He is not canon to [[Vast Space]]. ==Personality== [[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]] As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky. He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly. Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling. ==Appearance== By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. ===Other design notes=== Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. *His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". *He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. **Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. **As long as he isn't doing a lot of walking, he's fine with shorter shorts too. *Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. *In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves. *His eye color is brown. ==Creation and development== [[File:Men.png|alt=A cartoony, low-quality drawing of Halberd staring vacantly into the distance. In a floating thought bubble coming from his head is the text "Men (heart symbol)" followed by "and women" in smaller text.|thumb|149x149px|Things have certainly changed]] His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. In February 2023, he began being drawn with a more simple, shape-y design on occasion. ==Abilities== Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. #'''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #*As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God. ==Gallery== ''<small>[[Halberd (character)/Gallery|Click here to see Halberd's full gallery.]]</small>'' ===Recognized palettes === <gallery> File:Halwhite.png|"White hair" palette File:Halbrown.png|"Brown hair" palette </gallery> ===Reference images === TBA ==Trivia== *His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. **These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men. **A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. *BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. ===Name origin === Halberds are a type of weapon, and BEEL likes weapon names. Freezerays are also weapons. White as a surname is a reference to a voice line from Toontown Online spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. However, he is not really a doctor. ==Related pages== *[[BEELETH]], Hal's real-world counterpart *[[BEELETH's sona]], another representation of BEELETH [[Category:Sonas]] [[Category:Characters]] [[Category:LGBT+ characters]] [[Category:Non-canon]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]] [[Category:Stubs]] 32c54030a4ddfeb48480aeaac19892b10faffe70 Module:Sidebar 828 204 631 406 2023-03-14T22:35:53Z vast>Izno 0 move these items to config, discovered during work at meta Scribunto text/plain require('strict') local cfg = mw.loadData('Module:Sidebar/configuration') local p = {} local getArgs = require('Module:Arguments').getArgs --[[ Categorizes calling templates and modules with a 'style' parameter of any sort for tracking to convert to TemplateStyles. TODO after a long cleanup: Catch sidebars in other namespaces than Template and Module. TODO would probably want to remove /log and /archive as CS1 does ]] local function categorizeTemplatesWithInlineStyles(args) local title = mw.title.getCurrentTitle() if title.namespace ~= 10 and title.namespace ~= 828 then return '' end for _, pattern in ipairs (cfg.i18n.pattern.uncategorized_conversion_titles) do if title.text:match(pattern) then return '' end end for key, _ in pairs(args) do if mw.ustring.find(key, cfg.i18n.pattern.style_conversion) or key == 'width' then return cfg.i18n.category.conversion end end end --[[ For compatibility with the original {{sidebar with collapsible lists}} implementation, which passed some parameters through {{#if}} to trim their whitespace. This also triggered the automatic newline behavior. ]] -- See ([[meta:Help:Newlines and spaces#Automatic newline]]) local function trimAndAddAutomaticNewline(s) s = mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1") if mw.ustring.find(s, '^[#*:;]') or mw.ustring.find(s, '^{|') then return '\n' .. s else return s end end --[[ Finds whether a sidebar has a subgroup sidebar. ]] local function hasSubgroup(s) if mw.ustring.find(s, cfg.i18n.pattern.subgroup) then return true else return false end end local function has_navbar(navbar_mode, sidebar_name) return navbar_mode ~= cfg.i18n.navbar_none and navbar_mode ~= cfg.i18n.navbar_off and ( sidebar_name or mw.getCurrentFrame():getParent():getTitle():gsub(cfg.i18n.pattern.sandbox, '') ~= cfg.i18n.title_not_to_add_navbar ) end local function has_list_class(args, htmlclass) local patterns = { '^' .. htmlclass .. '$', '%s' .. htmlclass .. '$', '^' .. htmlclass .. '%s', '%s' .. htmlclass .. '%s' } for arg, value in pairs(args) do if type(arg) == 'string' and mw.ustring.find(arg, 'class') then for _, pattern in ipairs(patterns) do if mw.ustring.find(args[arg] or '', pattern) then return true end end end end return false end -- there are a lot of list classes in the wild, so we add their TemplateStyles local function add_list_styles(args) local frame = mw.getCurrentFrame() local function add_list_templatestyles(htmlclass, templatestyles) if has_list_class(args, htmlclass) then return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles } } else return '' end end local plainlist_styles = add_list_templatestyles('plainlist', cfg.i18n.plainlist_templatestyles) local hlist_styles = add_list_templatestyles('hlist', cfg.i18n.hlist_templatestyles) -- a second workaround for [[phab:T303378]] -- when that issue is fixed, we can actually use has_navbar not to emit the -- tag here if we want if has_navbar(args.navbar, args.name) and hlist_styles == '' then hlist_styles = frame:extensionTag{ name = 'templatestyles', args = { src = cfg.i18n.hlist_templatestyles} } end -- hlist -> plainlist is best-effort to preserve old Common.css ordering. [hlist_note] return hlist_styles .. plainlist_styles end -- work around [[phab:T303378]] -- for each arg: find all the templatestyles strip markers, insert them into a -- table. then remove all templatestyles markers from the arg local function move_hiding_templatestyles(args) local gfind = string.gfind local gsub = string.gsub local templatestyles_markers = {} local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)' for k, arg in pairs(args) do for marker in gfind(arg, strip_marker_pattern) do table.insert(templatestyles_markers, marker) end args[k] = gsub(arg, strip_marker_pattern, '') end return templatestyles_markers end --[[ Main sidebar function. Takes the frame, args, and an optional collapsibleClass. The collapsibleClass is and should be used only for sidebars with collapsible lists, as in p.collapsible. ]] function p.sidebar(frame, args, collapsibleClass) if not args then args = getArgs(frame) end local hiding_templatestyles = table.concat(move_hiding_templatestyles(args)) local root = mw.html.create() local child = args.child and mw.text.trim(args.child) == cfg.i18n.child_yes root = root:tag('table') if not child then root :addClass(cfg.i18n.class.sidebar) -- force collapsibleclass to be sidebar-collapse otherwise output nothing :addClass(collapsibleClass == cfg.i18n.class.collapse and cfg.i18n.class.collapse or nil) :addClass('nomobile') :addClass(args.float == cfg.i18n.float_none and cfg.i18n.class.float_none or nil) :addClass(args.float == cfg.i18n.float_left and cfg.i18n.class.float_left or nil) :addClass(args.wraplinks ~= cfg.i18n.wrap_true and cfg.i18n.class.wraplinks or nil) :addClass(args.bodyclass or args.class) :css('width', args.width or nil) :cssText(args.bodystyle or args.style) if args.outertitle then root :tag('caption') :addClass(cfg.i18n.class.outer_title) :addClass(args.outertitleclass) :cssText(args.outertitlestyle) :wikitext(args.outertitle) end if args.topimage then local imageCell = root:tag('tr'):tag('td') imageCell :addClass(cfg.i18n.class.top_image) :addClass(args.topimageclass) :cssText(args.topimagestyle) :wikitext(args.topimage) if args.topcaption then imageCell :tag('div') :addClass(cfg.i18n.class.top_caption) :cssText(args.topcaptionstyle) :wikitext(args.topcaption) end end if args.pretitle then root :tag('tr') :tag('td') :addClass(args.topimage and cfg.i18n.class.pretitle_with_top_image or cfg.i18n.class.pretitle) :addClass(args.pretitleclass) :cssText(args.basestyle) :cssText(args.pretitlestyle) :wikitext(args.pretitle) end else root :addClass(cfg.i18n.class.subgroup) :addClass(args.bodyclass or args.class) :cssText(args.bodystyle or args.style) end if args.title then if child then root :wikitext(args.title) else root :tag('tr') :tag('th') :addClass(args.pretitle and cfg.i18n.class.title_with_pretitle or cfg.i18n.class.title) :addClass(args.titleclass) :cssText(args.basestyle) :cssText(args.titlestyle) :wikitext(args.title) end end if args.image then local imageCell = root:tag('tr'):tag('td') imageCell :addClass(cfg.i18n.class.image) :addClass(args.imageclass) :cssText(args.imagestyle) :wikitext(args.image) if args.caption then imageCell :tag('div') :addClass(cfg.i18n.class.caption) :cssText(args.captionstyle) :wikitext(args.caption) end end if args.above then root :tag('tr') :tag('td') :addClass(cfg.i18n.class.above) :addClass(args.aboveclass) :cssText(args.abovestyle) :newline() -- newline required for bullet-points to work :wikitext(args.above) end local rowNums = {} for k, v in pairs(args) do k = '' .. k local num = k:match('^heading(%d+)$') or k:match('^content(%d+)$') if num then table.insert(rowNums, tonumber(num)) end end table.sort(rowNums) -- remove duplicates from the list (e.g. 3 will be duplicated if both heading3 -- and content3 are specified) for i = #rowNums, 1, -1 do if rowNums[i] == rowNums[i - 1] then table.remove(rowNums, i) end end for i, num in ipairs(rowNums) do local heading = args['heading' .. num] if heading then root :tag('tr') :tag('th') :addClass(cfg.i18n.class.heading) :addClass(args.headingclass) :addClass(args['heading' .. num .. 'class']) :cssText(args.basestyle) :cssText(args.headingstyle) :cssText(args['heading' .. num .. 'style']) :newline() :wikitext(heading) end local content = args['content' .. num] if content then root :tag('tr') :tag('td') :addClass(hasSubgroup(content) and cfg.i18n.class.content_with_subgroup or cfg.i18n.class.content) :addClass(args.contentclass) :addClass(args['content' .. num .. 'class']) :cssText(args.contentstyle) :cssText(args['content' .. num .. 'style']) :newline() :wikitext(content) :done() -- Without a linebreak after the </td>, a nested list like -- "* {{hlist| ...}}" doesn't parse correctly. :newline() end end if args.below then root :tag('tr') :tag('td') :addClass(cfg.i18n.class.below) :addClass(args.belowclass) :cssText(args.belowstyle) :newline() :wikitext(args.below) end if not child and has_navbar(args.navbar, args.name) then root :tag('tr') :tag('td') :addClass(cfg.i18n.class.navbar) :cssText(args.navbarstyle) :wikitext(require('Module:Navbar')._navbar{ args.name, mini = 1, fontstyle = args.navbarfontstyle }) end local base_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = cfg.i18n.templatestyles } } local templatestyles = '' if args['templatestyles'] and args['templatestyles'] ~= '' then templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['templatestyles'] } } end local child_templatestyles = '' if args['child templatestyles'] and args['child templatestyles'] ~= '' then child_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['child templatestyles'] } } end local grandchild_templatestyles = '' if args['grandchild templatestyles'] and args['grandchild templatestyles'] ~= '' then grandchild_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['grandchild templatestyles'] } } end return table.concat({ add_list_styles(args), -- see [hlist_note] above about ordering base_templatestyles, templatestyles, child_templatestyles, grandchild_templatestyles, hiding_templatestyles, tostring(root), (child and cfg.i18n.category.child or ''), categorizeTemplatesWithInlineStyles(args) }) end local function list_title(args, is_centered_list_titles, num) local title_text = trimAndAddAutomaticNewline(args['list' .. num .. 'title'] or cfg.i18n.default_list_title) local title if is_centered_list_titles then -- collapsible can be finicky, so provide some CSS/HTML to support title = mw.html.create('div') :addClass(cfg.i18n.class.list_title_centered) :wikitext(title_text) else title = mw.html.create() :wikitext(title_text) end local title_container = mw.html.create('div') :addClass(cfg.i18n.class.list_title) -- don't /need/ a listnumtitleclass because you can do -- .templateclass .listnumclass .sidebar-list-title :addClass(args.listtitleclass) :cssText(args.basestyle) :cssText(args.listtitlestyle) :cssText(args['list' .. num .. 'titlestyle']) :node(title) :done() return title_container end --[[ Main entry point for sidebar with collapsible lists. Does the work of creating the collapsible lists themselves and including them into the args. ]] function p.collapsible(frame) local args = getArgs(frame) if not args.name and frame:getParent():getTitle():gsub(cfg.i18n.pattern.collapse_sandbox, '') == cfg.i18n.collapse_title_not_to_add_navbar then args.navbar = cfg.i18n.navbar_none end local contentArgs = {} local is_centered_list_titles = false if args['centered list titles'] and args['centered list titles'] ~= '' then is_centered_list_titles = true end for k, v in pairs(args) do local num = string.match(k, '^list(%d+)$') if num then local expand = args.expanded and (args.expanded == 'all' or args.expanded == args['list' .. num .. 'name']) local row = mw.html.create('div') row :addClass(cfg.i18n.class.list) :addClass('mw-collapsible') :addClass((not expand) and 'mw-collapsed' or nil) :addClass(args['list' .. num .. 'class']) :cssText(args.listframestyle) :cssText(args['list' .. num .. 'framestyle']) :node(list_title(args, is_centered_list_titles, num)) :tag('div') :addClass(cfg.i18n.class.list_content) :addClass('mw-collapsible-content') -- don't /need/ a listnumstyleclass because you can do -- .templatename .listnumclass .sidebar-list :addClass(args.listclass) :cssText(args.liststyle) :cssText(args['list' .. num .. 'style']) :wikitext(trimAndAddAutomaticNewline(args['list' .. num])) contentArgs['content' .. num] = tostring(row) end end for k, v in pairs(contentArgs) do args[k] = v end return p.sidebar(frame, args, cfg.i18n.class.collapse) end return p 71fe765846593e025ca2f94371315e9dbb5bb4d2 632 631 2023-04-27T18:15:34Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain require('strict') local cfg = mw.loadData('Module:Sidebar/configuration') local p = {} local getArgs = require('Module:Arguments').getArgs --[[ Categorizes calling templates and modules with a 'style' parameter of any sort for tracking to convert to TemplateStyles. TODO after a long cleanup: Catch sidebars in other namespaces than Template and Module. TODO would probably want to remove /log and /archive as CS1 does ]] local function categorizeTemplatesWithInlineStyles(args) local title = mw.title.getCurrentTitle() if title.namespace ~= 10 and title.namespace ~= 828 then return '' end for _, pattern in ipairs (cfg.i18n.pattern.uncategorized_conversion_titles) do if title.text:match(pattern) then return '' end end for key, _ in pairs(args) do if mw.ustring.find(key, cfg.i18n.pattern.style_conversion) or key == 'width' then return cfg.i18n.category.conversion end end end --[[ For compatibility with the original {{sidebar with collapsible lists}} implementation, which passed some parameters through {{#if}} to trim their whitespace. This also triggered the automatic newline behavior. ]] -- See ([[meta:Help:Newlines and spaces#Automatic newline]]) local function trimAndAddAutomaticNewline(s) s = mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1") if mw.ustring.find(s, '^[#*:;]') or mw.ustring.find(s, '^{|') then return '\n' .. s else return s end end --[[ Finds whether a sidebar has a subgroup sidebar. ]] local function hasSubgroup(s) if mw.ustring.find(s, cfg.i18n.pattern.subgroup) then return true else return false end end local function has_navbar(navbar_mode, sidebar_name) return navbar_mode ~= cfg.i18n.navbar_none and navbar_mode ~= cfg.i18n.navbar_off and ( sidebar_name or mw.getCurrentFrame():getParent():getTitle():gsub(cfg.i18n.pattern.sandbox, '') ~= cfg.i18n.title_not_to_add_navbar ) end local function has_list_class(args, htmlclass) local patterns = { '^' .. htmlclass .. '$', '%s' .. htmlclass .. '$', '^' .. htmlclass .. '%s', '%s' .. htmlclass .. '%s' } for arg, value in pairs(args) do if type(arg) == 'string' and mw.ustring.find(arg, 'class') then for _, pattern in ipairs(patterns) do if mw.ustring.find(args[arg] or '', pattern) then return true end end end end return false end -- there are a lot of list classes in the wild, so we add their TemplateStyles local function add_list_styles(args) local frame = mw.getCurrentFrame() local function add_list_templatestyles(htmlclass, templatestyles) if has_list_class(args, htmlclass) then return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles } } else return '' end end local plainlist_styles = add_list_templatestyles('plainlist', cfg.i18n.plainlist_templatestyles) local hlist_styles = add_list_templatestyles('hlist', cfg.i18n.hlist_templatestyles) -- a second workaround for [[phab:T303378]] -- when that issue is fixed, we can actually use has_navbar not to emit the -- tag here if we want if has_navbar(args.navbar, args.name) and hlist_styles == '' then hlist_styles = frame:extensionTag{ name = 'templatestyles', args = { src = cfg.i18n.hlist_templatestyles} } end -- hlist -> plainlist is best-effort to preserve old Common.css ordering. [hlist_note] return hlist_styles .. plainlist_styles end -- work around [[phab:T303378]] -- for each arg: find all the templatestyles strip markers, insert them into a -- table. then remove all templatestyles markers from the arg local function move_hiding_templatestyles(args) local gfind = string.gfind local gsub = string.gsub local templatestyles_markers = {} local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)' for k, arg in pairs(args) do for marker in gfind(arg, strip_marker_pattern) do table.insert(templatestyles_markers, marker) end args[k] = gsub(arg, strip_marker_pattern, '') end return templatestyles_markers end --[[ Main sidebar function. Takes the frame, args, and an optional collapsibleClass. The collapsibleClass is and should be used only for sidebars with collapsible lists, as in p.collapsible. ]] function p.sidebar(frame, args, collapsibleClass) if not args then args = getArgs(frame) end local hiding_templatestyles = table.concat(move_hiding_templatestyles(args)) local root = mw.html.create() local child = args.child and mw.text.trim(args.child) == cfg.i18n.child_yes root = root:tag('table') if not child then root :addClass(cfg.i18n.class.sidebar) -- force collapsibleclass to be sidebar-collapse otherwise output nothing :addClass(collapsibleClass == cfg.i18n.class.collapse and cfg.i18n.class.collapse or nil) :addClass('nomobile') :addClass(args.float == cfg.i18n.float_none and cfg.i18n.class.float_none or nil) :addClass(args.float == cfg.i18n.float_left and cfg.i18n.class.float_left or nil) :addClass(args.wraplinks ~= cfg.i18n.wrap_true and cfg.i18n.class.wraplinks or nil) :addClass(args.bodyclass or args.class) :css('width', args.width or nil) :cssText(args.bodystyle or args.style) if args.outertitle then root :tag('caption') :addClass(cfg.i18n.class.outer_title) :addClass(args.outertitleclass) :cssText(args.outertitlestyle) :wikitext(args.outertitle) end if args.topimage then local imageCell = root:tag('tr'):tag('td') imageCell :addClass(cfg.i18n.class.top_image) :addClass(args.topimageclass) :cssText(args.topimagestyle) :wikitext(args.topimage) if args.topcaption then imageCell :tag('div') :addClass(cfg.i18n.class.top_caption) :cssText(args.topcaptionstyle) :wikitext(args.topcaption) end end if args.pretitle then root :tag('tr') :tag('td') :addClass(args.topimage and cfg.i18n.class.pretitle_with_top_image or cfg.i18n.class.pretitle) :addClass(args.pretitleclass) :cssText(args.basestyle) :cssText(args.pretitlestyle) :wikitext(args.pretitle) end else root :addClass(cfg.i18n.class.subgroup) :addClass(args.bodyclass or args.class) :cssText(args.bodystyle or args.style) end if args.title then if child then root :wikitext(args.title) else root :tag('tr') :tag('th') :addClass(args.pretitle and cfg.i18n.class.title_with_pretitle or cfg.i18n.class.title) :addClass(args.titleclass) :cssText(args.basestyle) :cssText(args.titlestyle) :wikitext(args.title) end end if args.image then local imageCell = root:tag('tr'):tag('td') imageCell :addClass(cfg.i18n.class.image) :addClass(args.imageclass) :cssText(args.imagestyle) :wikitext(args.image) if args.caption then imageCell :tag('div') :addClass(cfg.i18n.class.caption) :cssText(args.captionstyle) :wikitext(args.caption) end end if args.above then root :tag('tr') :tag('td') :addClass(cfg.i18n.class.above) :addClass(args.aboveclass) :cssText(args.abovestyle) :newline() -- newline required for bullet-points to work :wikitext(args.above) end local rowNums = {} for k, v in pairs(args) do k = '' .. k local num = k:match('^heading(%d+)$') or k:match('^content(%d+)$') if num then table.insert(rowNums, tonumber(num)) end end table.sort(rowNums) -- remove duplicates from the list (e.g. 3 will be duplicated if both heading3 -- and content3 are specified) for i = #rowNums, 1, -1 do if rowNums[i] == rowNums[i - 1] then table.remove(rowNums, i) end end for i, num in ipairs(rowNums) do local heading = args['heading' .. num] if heading then root :tag('tr') :tag('th') :addClass(cfg.i18n.class.heading) :addClass(args.headingclass) :addClass(args['heading' .. num .. 'class']) :cssText(args.basestyle) :cssText(args.headingstyle) :cssText(args['heading' .. num .. 'style']) :newline() :wikitext(heading) end local content = args['content' .. num] if content then root :tag('tr') :tag('td') :addClass(hasSubgroup(content) and cfg.i18n.class.content_with_subgroup or cfg.i18n.class.content) :addClass(args.contentclass) :addClass(args['content' .. num .. 'class']) :cssText(args.contentstyle) :cssText(args['content' .. num .. 'style']) :newline() :wikitext(content) :done() -- Without a linebreak after the </td>, a nested list like -- "* {{hlist| ...}}" doesn't parse correctly. :newline() end end if args.below then root :tag('tr') :tag('td') :addClass(cfg.i18n.class.below) :addClass(args.belowclass) :cssText(args.belowstyle) :newline() :wikitext(args.below) end if not child and has_navbar(args.navbar, args.name) then root :tag('tr') :tag('td') :addClass(cfg.i18n.class.navbar) :cssText(args.navbarstyle) :wikitext(require('Module:Navbar')._navbar{ args.name, mini = 1, fontstyle = args.navbarfontstyle }) end local base_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = cfg.i18n.templatestyles } } local templatestyles = '' if args['templatestyles'] and args['templatestyles'] ~= '' then templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['templatestyles'] } } end local child_templatestyles = '' if args['child templatestyles'] and args['child templatestyles'] ~= '' then child_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['child templatestyles'] } } end local grandchild_templatestyles = '' if args['grandchild templatestyles'] and args['grandchild templatestyles'] ~= '' then grandchild_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['grandchild templatestyles'] } } end return table.concat({ add_list_styles(args), -- see [hlist_note] above about ordering base_templatestyles, templatestyles, child_templatestyles, grandchild_templatestyles, hiding_templatestyles, tostring(root), (child and cfg.i18n.category.child or ''), categorizeTemplatesWithInlineStyles(args) }) end local function list_title(args, is_centered_list_titles, num) local title_text = trimAndAddAutomaticNewline(args['list' .. num .. 'title'] or cfg.i18n.default_list_title) local title if is_centered_list_titles then -- collapsible can be finicky, so provide some CSS/HTML to support title = mw.html.create('div') :addClass(cfg.i18n.class.list_title_centered) :wikitext(title_text) else title = mw.html.create() :wikitext(title_text) end local title_container = mw.html.create('div') :addClass(cfg.i18n.class.list_title) -- don't /need/ a listnumtitleclass because you can do -- .templateclass .listnumclass .sidebar-list-title :addClass(args.listtitleclass) :cssText(args.basestyle) :cssText(args.listtitlestyle) :cssText(args['list' .. num .. 'titlestyle']) :node(title) :done() return title_container end --[[ Main entry point for sidebar with collapsible lists. Does the work of creating the collapsible lists themselves and including them into the args. ]] function p.collapsible(frame) local args = getArgs(frame) if not args.name and frame:getParent():getTitle():gsub(cfg.i18n.pattern.collapse_sandbox, '') == cfg.i18n.collapse_title_not_to_add_navbar then args.navbar = cfg.i18n.navbar_none end local contentArgs = {} local is_centered_list_titles = false if args['centered list titles'] and args['centered list titles'] ~= '' then is_centered_list_titles = true end for k, v in pairs(args) do local num = string.match(k, '^list(%d+)$') if num then local expand = args.expanded and (args.expanded == 'all' or args.expanded == args['list' .. num .. 'name']) local row = mw.html.create('div') row :addClass(cfg.i18n.class.list) :addClass('mw-collapsible') :addClass((not expand) and 'mw-collapsed' or nil) :addClass(args['list' .. num .. 'class']) :cssText(args.listframestyle) :cssText(args['list' .. num .. 'framestyle']) :node(list_title(args, is_centered_list_titles, num)) :tag('div') :addClass(cfg.i18n.class.list_content) :addClass('mw-collapsible-content') -- don't /need/ a listnumstyleclass because you can do -- .templatename .listnumclass .sidebar-list :addClass(args.listclass) :cssText(args.liststyle) :cssText(args['list' .. num .. 'style']) :wikitext(trimAndAddAutomaticNewline(args['list' .. num])) contentArgs['content' .. num] = tostring(row) end end for k, v in pairs(contentArgs) do args[k] = v end return p.sidebar(frame, args, cfg.i18n.class.collapse) end return p 71fe765846593e025ca2f94371315e9dbb5bb4d2 Anvil 0 310 608 2023-03-14T23:14:16Z BEELETH 2 real wikitext text/x-wiki {{Infobox|above=Anvil|caption=Design as of 2022|image=[[File:Placeholder.png|200px|Placeholder]]|header1=Creation and development}} The '''Cursed Knight of Endless Ruin''', also referred to with the names '''Anvil''' and '''Ruin''' (the former being his usual name in canon media), is a [[beastman]] knight of uncertain origin. He is one of the only people to openly use [[alchemy]] despite it being outlawed in many parts of the [[Uncharted Space]], utilizing his exposed [[soul]] and any other souls he can absorb. Though Anvil uses both he/him and she/her (and occasionally they/them) as his pronouns, this article solely refers to him with he/him pronouns for consistency purposes. == Personality == TBA == Appearance == TBA === Other design notes === TBA == Creation and development == TBA == In-universe history == TBA == Abilities == Anvil is an exceptionally strong beastman on a physical level, and also has innate and immense kinetic/alchemic ability and potential partially derived from his curse. # '''Manipulating his soul as well as others' souls:''' TBA # Wielding the Golden Hammer of Endless Ruin: TBA # Using immense physical strength: TBA # Using various forms of kineticism: TBA #* Pyrokineticism #* Alchemy # == Gallery == ''<small>[[Anvil/Gallery|Click here to see Anvil's full gallery.]]</small>'' ===Recognized palettes=== TBA ===Reference images=== TBA == Trivia == * Anvil was originally planned to wear a helmet at all times, but he is usually portrayed nowadays not wearing it. === Name origin === Anvil derives his name from a metalworking tool associated with blacksmiths despite not being a blacksmith himself; however, anvils are typically used with hammers in the blacksmithing process, and Anvil wields a large hammer. == Related pages == * [[Forge]], another beastman with a similar name * [[Nym of the Lake]], another knight occasionally referred to as the Cursed Knight [[Category:Beastmen]] [[Category:Uncharted Space]] [[Category:Stubs]] 2900a18cf32c156a70e1f9cb95fafb8ad0e9c4ff Soul 0 311 609 2023-03-15T00:11:58Z BEELETH 2 Redirected page to [[Souls]] wikitext text/x-wiki #REDIRECT [[Souls]] a4a5fa6dde1c6185e2d3b73e63453b5020da8ad1 BEELETH 0 149 610 548 2023-03-19T04:58:59Z BEELETH 2 wikitext text/x-wiki {{Mbox|text=This [[non-canon]] page of a [[real person]] exists on the wiki because this person is a community member, content creator, and/or important person in the [[Vast Space]]'s real-world community. Please be respectful when editing this page.|name=realperson}}{{Infobox|above=BEELETH|data5=Autosexual, aromantic, polyamorous|data8=TBA|data7=TBA|label9=Offsite links|label8=Playlist|label7=Theme song|header6=Extra information|caption=Self-portrait|label5=Orientation|image=[[File:Beelethcreatura.png|200px|High-quality, astounding artistic rendition of BEELETH]]|data4=* they/them * he/him * it/its * no pronouns|label4=Pronouns|data3=Epicene, intersex, femboy, bear, androgyne|label3=Genders and labels|data2=* BEELETH (BEEL) * HALBERD (AL, HAL, HALB, HALBY, etc.) * URINALBEAST (YUUBI)|label2=Other names|header1=About this person|data9=TBA}}<small>''Not to be confused with [[Halberd (character)|Halberd]] or [[Beeleth]].''</small> '''BEELETH''' (also called '''BEEL''', '''HALBERD''', and '''YUUBI''' among many other names) is the real-world creator of the Vast Space, and is the main contributor to its lore and canon. They are also the creator of this wiki, and their user page can be accessed [[User:BEELETH|here]]. Their name is not always required to be written in all-capital letters, but it is preferred whenever possible or convenient. Though they use multiple sets of pronouns, this article exclusively refers to them with they/them for consistency. == Contributions to Vast Space == === General categories === * [[:Category:Created by BEELETH|Category:Created by BEELETH]] * [[:Category:Designed by BEELETH|Category:Designed by BEELETH]] === Specific === * Creator of the [[Vast Space]] and most canon media set within it ** Founder and bureaucrat of the Vast Space Wiki == Links == These pages are able to be used to find more first-hand information about BEELETH as well as their characters. * [https://beeleth.carrd.co/ Carrd] *[https://discord.gg/r9ZwNhV4rx Discord] * [https://www.roblox.com/users/30627566/profile Roblox] * [https://toyhou.se/BEELETH Toyhouse] * [https://twitter.com/itsbeeleth Twitter] == Related pages == * [[Beeleth]], a character who shares BEELETH's name and serves as a sona on occasion * [[Halberd]], an idealized representation of BEEL's future self * [[C.C.]], a character who BEEL once shared a name with [[Category:Real]] [[Category:Real people]] [[Category:Contributors]] [[Category:Humans]] c667a13cf91e66127e4a30f5b7016be69c8ad597 Origin 0 295 611 584 2023-04-03T15:46:56Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Origin|image=[[File:Origin2.png|200px|Origin]]|header1=Creation and development|label2=Development|data2=* November 2020 (created) * January 2023 (redesigned)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Unconfirmed|label6=Other names|data6=* Origin * Rykha'uophi-konu}} '''Origin''', known as '''Rykha'uophi-konu''' by the [[Auophian]] [[eyes]], is the [[deity]] who reigns over the [[Vast Space]] as a whole. Most everything within the Vast Space can be traced back to him in some way; because of this, he is considered to be the creator of everything that did not simply will itself into existence. In relation to the [[Auophian pantheon]], he is considered the primary creation deity. It is important to note that most other beings anywhere in the Vast Space, regardless of whether or not they are deities, are unaware of Origin's existence unless they have the [[sorrowful gaze]]. [[Abstract]] is often mistaken by those with less gazing ability to be the primary creation deity, as he also has the ability to create from [[ichor]] and is closer to all other [[Spaces]] than Origin is. == Personality == It is hard to discern what kind of personality Origin has, as he is too large and powerful to be accessibly interacted with by most individuals, let alone comprehended. === Voice === Origin does not speak, but rather perpetually emits sound comparable to whalesong, humans weeping, windchimes, and metallic dragging all at once. This is commonly referred to as him "growling". In the virtually impossible scenario he is to feel threatened in any way, he will "roar", in which he will vocalize a deafening noise best described as billions of humans and creatures shrieking and crying all at once. == Appearance == By default, Origin appears as an incomprehensibly large monster with characteristics somewhat comparable to a variety of animals. The majority of his body's surface is bioluminescent or reflectant to some extent. A star-like object known as the [[Origin point]] floats above his head between his antlers. === Biology and physical function === Past the thick but almost perfectly clear membrane that protects his internal organs, [[Origin ichor]] flows freely. His innards are also able to move around to an extent, as there is not much holding them in place; in fact, he sheds his organs regularly to grow them once more. Everything he expels from his body becomes a part of space and is imbued with a fraction of his power. The function of each of his organs is not entirely known, but they can all be observed from outside his body. * The cloud body is large, white organ (or possibly an organ system) that can visually be compared to the trim of a fur coat, though it has cloud-like properties hence the name. It is largest around his neck-area and the lower part of his body, but trails around the front of his body along the edge between the inside and outside of his membrane. The organ is partially exposed externally, and it is constantly shedding thin layers that follow behind Origin as he moves throughout Vast Space. These layers become nebulae when they are fully separated from him. ** This can be considered a reproductive organ, as greater spatial deities have the potential to be created from nebulae. * Throughout his body are small, pink pockets and glands full of [[godsorrow]]; this is the second type of ichor only Origin is known to produce. The two godsorrow glands at the base of his tails are where the majority of his body's godsorrow is generated, and he is able to expel it through his stingers if he chooses. Some large drops of godsorrow float around his upper cloud body, tail godskulls, and antlers. His skeletal structure is much less intricate than his specialized organs, and he noticeably lacks a lot of the bones that organic beings often have. * His cranial [[godskull]], unlike other Auophian deities, is completely dark. The "spine" that drapes loosely below his head is made of the same type of dark godskull. * There are no bones in the rest of his body save for the ovular godskulls on his tails, the pincers on the tail ends, and the forseps below them. * They are not considered to be connected to his body, but at least eight empty godskulls surround him at all times. He is able to drop them if he pleases, but he always replaces the one he discards. === Other design notes === TBA == Creation and development == Origin was initially created in late 2020 to be a sort of "higher power" over the other deities. He was later redesigned and rewritten in early 2023. == In-universe history == It can be assumed that Origin was either created at the same time as the Vast Space or he predates it == Abilities == # TBA == Gallery == === Recognized palettes === <gallery widths="120" heights="60"> File:Origin2.png|Default palette </gallery> === Reference images === TBA == Trivia == * Origin is the only deity to reign over a Space that does not contain its associated deity's name in its title. * He is also the only deity known to produce two types of ichor. * Despite existing prior to Abstract in canon, he was created as a character ''after'' him. === Name origins === He is often referred to as Origin because he was the first being to exist in the Vast Space and likely created it. His Auophian name, Rykha'uophi-konu, can be translated from the Auophian language as "the cherished blooming-one beyond us". Rykhaa means "cherished", and as it is followed by another "a" sound, it is combined into an "a-stop". Auophi can be interpreted as "blooming-one" but is generally left untranslated in most contexts as it is the civilization's name, and a more accurate, albeit rougher, translation of the word would be "person of flowers". The Auophian deities are often referred to as fellow Auophian people, albeit with a higher rank and higher reverance. The -konu suffix is an honorific reserved only for certain deities that reside beyond [[Light side|the known world]], and Origin shares this honorific with Abstract. == Related pages == * [[Vast Space]] [[Category:Characters]] [[Category:Vast Space]] [[Category:Deities]] [[Category:Greater deities]] [[Category:Stubs]] 76efd2ec323f454b667de89297754afa219a26c9 Furry 0 312 616 2023-04-05T23:58:43Z BEELETH 2 Redirected page to [[Category:Furries]] wikitext text/x-wiki #REDIRECT [[:Category:Furries]] ce5d41c49a68a8eb3d8b02a88dc2dca5701f8eb7 4Kids Entertainment 0 313 617 2023-04-06T01:41:41Z BEELETH 2 Created page with "'''4Kids Entertainment''' (also erroneously called '''4Kidz Entertainment''') is a multimedia entertainment company owned by [[John Blunts]] within the [[Uncharted Space]]. Its headquarters and main terrestrial broadcasting station are located in [[New Pokopoko]]. The company is famous (or infamous) for running the 4Kids TV channel, which only has a single show. == Trivia == * TBA === Name origins === 4Kids Entertainment's name and general atmosphere are derived from..." wikitext text/x-wiki '''4Kids Entertainment''' (also erroneously called '''4Kidz Entertainment''') is a multimedia entertainment company owned by [[John Blunts]] within the [[Uncharted Space]]. Its headquarters and main terrestrial broadcasting station are located in [[New Pokopoko]]. The company is famous (or infamous) for running the 4Kids TV channel, which only has a single show. == Trivia == * TBA === Name origins === 4Kids Entertainment's name and general atmosphere are derived from the defunct real-world company of the same name. == Related pages == * TBA [[Category:Stubs]] [[Category:Companies]] [[Category:Uncharted Space]] [[Category:New Pokopoko]] a5ca46bf4be5d9e535972c5e8948bd835900f6a2 New Pokopoko 0 286 618 593 2023-04-06T01:51:52Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=New Pokopoko|header1=Creation and development|label2=Development|data2=November 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Location information|caption=[[BEELETH]]'s concept art from 2023 (PLACEHOLDER, WILL ADD LATER)|image=[[File:Placeholder.png|200px|Placeholder]]}} <small>''Not to be confused with [[Old Pokopoko]].''</small> '''New Pokopoko''', rarely (but still known to be) referred to solely as '''Pokopoko''', is a populous, bustling city in the [[Light Side]] of the [[Uncharted Space]]. Aside from the advanced technology and countless companies, celebrities, and hotspots in its walls, the city most notably serves as the home of [[Bunjeecorp]]'s largest terrestrial headquarters. It was built over [[Old Pokopoko]]. It is the sister city of [[Gorgondel]], and the two cities share technology and business with each other. They are also two of the easiest non-adjacent [[locations]] in Uncharted Space to travel between, as intercity travel is made more convenient and accelerated with Bunjeecorp and [[HYDRA]]'s [[OPTRASYS|Optimized Transport System]]. It was originally only used for the transport of material, goods, militia, and important figures, but was later expanded to be for the general population once the infrastructure was fully expanded. It only takes about 20 to 30 minutes to travel between the cities despite their distance; however, in the extremely rare occasion of a traffic jam, travel could potentially take hours. == Creation and development == Initially, New Pokopoko was created in November 2022 as a one-off location during an AI Dungeon session set in the Uncharted Space. Many locations, characters, and events from the session were used as inspiration for [[Heavenly Beast|''Heavenly Beast'']]. optimistic dystopia == In-universe history == The [[location]] now known as New Pokopoko is one of the first known places in the Uncharted Space to enter the Light Side. Alchemists that were banished from [[Citadelonia]] or simply wished to practice alchemy in secret travelled northward, splitting into two similar yet distinct groups that would later found Old Pokopoko and Gorgondel. At least five years prior to ''Heavenly Beast'', Bunjeecorp gave the opportunity to a select few New Pokopokans to become cyborgs; two of these citizens were [[C.C.]] and [[Pollyanna]]. === ''Heavenly Beast'' === Along with [[Remudon]] and [[Hypnosen]], the [[Circle of Royal Knights]] temporarily stops at New Pokopoko while hunting down the [[Heaven Dragon]]. They are personally greeted at the New Pokopoko Main Gate by [[Woolf]]. === ''A Wicked Storm Comes'' === While New Pokopoko is not a major location during ''[[A Wicked Storm Comes]]'', certain events do occur at the same time as the story. (ill add them later im very tired of writing an article about a fictional city on and off) == Geography == Before it fully developed, New Pokopoko stood atop a flat, rocky plateau with little vegetation. === Major areas and districts === TBA ==== New Pokopoko Main Gate ==== Though there are other gates to the city, the Main Gate is the most popular and well-known, accessible to those coming from the South or those who are leaving the city. It resembles a theme park's gates, and usually has greeters available to visitors at all times of the day; these greeters may be robotic, holographic, or organic. It often is not patrolled by live militia, instead being monitored by machinery and cameras unless there is an emergency of some sort. ==== Rainbow roads ==== The "rainbow roads" of New Pokopoko are the busiest streets in the city. They are heavily marketed to tourists and are often elaborately decorated, even moreso than the rest of the city's streets and buildings. ==== Orbits ==== Due to the unique architecture and technology of New Pokopoko, orbits currently exist nowhere else in the Light Side, and there are only a few in the city at all. An orbit consists of several floating (free-floating or otherwise suspended) buildings, areas, or structures that slowly circle a larger hub platform in the center. Each of the floating platforms in the orbit may be openly accessible, or they may be sealed in a bubble-like, soundproof barrier only permeable via teleportation or other specialized transport. Orbits are most popular with the youth, but are sometimes utilized by those who seek privacy and unique scenery. === Architecture === New Pokopoko is physically walled off from the majority of its border and also is protected by an [[New Pokopoko alchemic barrier|invisible barrier]] that can be readily configured by some Bunjeecorp officials at any time with the use of alchemy and technology combined. This barrier also serves as a screen on which special messages can be projected, or a place for advertisements to be displayed at night alongside the stars. The walls of the city open at specific points in each cardinal direction. The Western wall is exclusively for Bunjeecorp use, as it is connected to a major terrestrial starship port overlooking the Gobu Canyon; it would be a security and safety threat if unauthorized individuals were able to freely access it. The Southern wall opens at two points, but the New Pokopoko Main Gate is the most used opening. The other southern opening is generally reserved for emergencies or for the local militia. Generally, the architecture of New Pokopoko is sleek and modern, utilizing both straight edges and curves to achieve a futuristic look. Many buildings and landmarks are white, blue, or transparent; it also isn't unusual for them to have color-changing parts or be able to reflect light in beautiful, creative ways. ==== Transportation ==== Though it's possible for the most part to walk from place to place, a lot of areas are only accessible through certain modes of transport. For example, some buildings are suspended in mid-air and must be accessed through [[insta-jumps]]. Some places also have tubes for people or specialized equipment to shoot through quickly, but this isn't very common due to how much space that the tubes can take up; they are, however, often more cost-effective to create and maintain than insta-jumps. The insta-jumps used throughout the city are generally paid for by the government, but will sometimes be owned by businesses or individuals who can afford them. Personal vehicles are very uncommon in New Pokopoko due to the reliability and often cheap prices of public transport options provided by the city or by some businesses. ===== Optimized Transport System (OPTRASYS) ===== <small>''See [[OPTRASYS]] for more information.''</small> OPTRASYS is a travel system jointly developed by Bunjeecorp and HYDRA. It allows for high-speed, nearly entirely automated safe travel between New Pokopoko and Gorgondel for both organic and inorganic matter. It was initially developed for private transport, but was later opened to the public after the NPCC realized the economic and social potential of tourism between the two cities and requested Bunjeecorp to expand the system. In order to legally board OPTRASYS, one must have a Bunjeecorp or HYDRA employee ID, a Gorgondel or New Pokopoko citizen ID, a tourist card, or a temporary OPTRASYS card on hand. Individuals who are not of the mature age of their species or are otherwise unable to travel on their own must travel with someone who is able to legally board OPTRASYS, regardless of whether or not the unable person has the correct cards for travel. === Industries and economy === TBA === Climate === Prior to New Pokopoko's development into a more modern city, the area's climate was arid and temperate. Nowadays, the weather is largely controlled by a semi-automated system jointly controlled by Bunjeecorp and the New Pokopoko City Council; the weather patterns and seasons are almost never extreme, and are based on the natural climate of non-desert regions of the Light Side. == Government == New Pokopoko is governed by the New Pokopoko City Council (NPCC), which is openly heavily influenced by Bunjeecorp; they almost completely singlehandedly fund the city government and provide for the city's infrastructure themselves, so they are often considered an extension of the NPCC. === Militia === TBA == Culture == TBA '''personal notes for later''' * figure out what everyones deal w unicorns is * how exactly does everyone feel about gorgondel anyway * do people actually like bunjeecorp * alchemy??? do people even know what it is here???? ** kineticism as a whole actually == Trivia == * New Pokopoko was conceptualized ''before'' Old Pokopoko, despite the name. === Name origin === The phrase "Pokopoko" is entirely meaningless outside of canon, and was chosen on a whim because of the sound. In canon, however, New Pokopoko derives its name from Old Pokopoko. == Related pages == * [[Gobu Canyon]], a nearby region * [[Gorgondel]], New Pokopoko's sister city * [[Old Pokopoko]], the past version of New Pokopoko [[Category:Locations]] [[Category:Uncharted Space]] [[Category:Locations in Uncharted Space]] [[Category:Stubs]] 35f0533a46ecef9f2a4c4468367362140f12f26d Location 0 314 619 2023-04-06T01:53:35Z BEELETH 2 Redirected page to [[Category:Locations]] wikitext text/x-wiki #REDIRECT [[:Category:Locations]] a3e7a566d3ed7ccca2698f5d1324fd77e2f53b61 Locations 0 315 620 2023-04-06T01:54:23Z BEELETH 2 Redirected page to [[Category:Locations]] wikitext text/x-wiki #REDIRECT [[:Category:Locations]] a3e7a566d3ed7ccca2698f5d1324fd77e2f53b61 Deity 0 316 621 2023-04-06T01:57:33Z BEELETH 2 Redirected page to [[Deities]] wikitext text/x-wiki #REDIRECT [[Deities]] 997df5ba0fb25cfb36a887d7cd30c8fb73b14c81 Main Page 0 1 622 287 2023-04-11T15:25:22Z BEELETH 2 why tf is this here wikitext text/x-wiki #REDIRECT [[BEELETH Wiki]]__NOTOC__ 0df2e339cc05d181bbedaae7c78cb088a818cbb3 Uncharted Space 0 288 623 570 2023-04-11T16:26:59Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Uncharted Space|header1=Creation and development|label2=Development|data2=TBA|label3=Creator(s)|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Uncharted Zone|label6=Guardian(s)|data6=None}} The '''Uncharted Space''', originally referred to as the '''Uncharted Zone''', is a [[Space]] contained within [[Vast Space]]. There is no [[major deity]] associated with it. == Creation and development == In October of 2021, [[BEELETH]] had a dream in which they explored a then-non-existent character universe referred to as the Uncharted Zone. The basis of what they could remember of the dream's plot ended up becoming part of a new Space's lore. == In-universe history == TBA === ''Heavenly Beast'' === See the dedicated page for ''[[Heavenly Beast]].'' TBA === ''A Wicked Storm Comes'' === See the dedicated page for ''[[A Wicked Storm Comes]].'' TBA == Spatial characteristics == As do all Spaces, Uncharted Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Uncharted Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present. === Traits === # [[Souls]] are a very prominent part of the Uncharted Space for a variety of reasons (depending on the area). # [[Kineticism]] is much more prevalent here than in other parts of Vast Space, and it is more common to know some form of it, or at least to be capable of learning it. === Laws === # All laws of the Vast Space also apply to the Uncharted Space whenever possible. # There is a "known world" (Light Side) and an "unknown world" (Dark Side). The Light Side is continuously expanding, but there isn't a consistently proven way to speed it up or slow it down, let alone know which direction it will majorly expand in next. # The Dark Side is unsafe to enter or be near. There have been attempts to enter and explore it, but no adventurers are known to have returned. == Trivia == * As of January 2023, the Uncharted Space is the largest thing in the Vast Space to have been inspired by a dream. * The Uncharted Space is the second subsection of Vast Space to have ever been referred to as a Zone. ** The first Zone was the [[Calamity Zone]], which is now of dubious canon. == Related pages == * [[Calamity Zone]] [[Category:Uncharted Space]] [[Category:Spaces]] [[Category:Stubs]] cb9fb6d29cb656fb0c364b4ce2498cfc58853534 641 623 2023-04-27T18:16:09Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Uncharted Space|header1=Creation and development|label2=Development|data2=TBA|label3=Creator(s)|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Uncharted Zone|label6=Guardian(s)|data6=None}} The '''Uncharted Space''', originally referred to as the '''Uncharted Zone''', is a [[Space]] contained within [[Vast Space]]. There is no [[major deity]] associated with it. == Creation and development == In October of 2021, [[BEELETH]] had a dream in which they explored a then-non-existent character universe referred to as the Uncharted Zone. The basis of what they could remember of the dream's plot ended up becoming part of a new Space's lore. == In-universe history == TBA === ''Heavenly Beast'' === See the dedicated page for ''[[Heavenly Beast]].'' TBA; royal knights find and slay the heaven dragon, several locations are introduced and established === ''A Wicked Storm Comes'' === See the dedicated page for ''[[A Wicked Storm Comes]].'' TBA; introduction of the grand ocean and its inhabitants, possibly related to a deity or rus or something idk === ''Repentance Fugue'' === See the dedicated page for ''[[Repentance Fugue]]''. TBA; bunjeecorp-related in some way === ''On a Scale From 1 to 10'' === See the dedicated page for [[On a Scale From 1 to 10|''On a Scale From 1 to 10'']]. TBA; bunjeecorp? or hydra? or both? not entirely sure == Spatial characteristics == As do all Spaces, Uncharted Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Uncharted Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present. === Traits === # [[Souls]] are a very prominent part of the Uncharted Space for a variety of reasons (depending on the area). # [[Kineticism]] is much more prevalent here than in other parts of Vast Space, and it is more common to know some form of it, or at least to be capable of learning it. === Laws === # All laws of the Vast Space also apply to the Uncharted Space whenever possible. # There is a "known world" (Light Side) and an "unknown world" (Dark Side). The Light Side is continuously expanding, but there isn't a consistently proven way to speed it up or slow it down, let alone know which direction it will majorly expand in next. # The Dark Side is unsafe to enter or be near. There have been attempts to enter and explore it, but no adventurers are known to have returned. == Trivia == * As of January 2023, the Uncharted Space is the largest thing in the Vast Space to have been inspired by a dream. * The Uncharted Space is the second subsection of Vast Space to have ever been referred to as a Zone. ** The first Zone was the [[Calamity Zone]], which is now of dubious canon. == Related pages == * [[Calamity Zone]] [[Category:Uncharted Space]] [[Category:Spaces]] [[Category:Stubs]] 3e9f0299af53ac453acd960715ae5126879725c0 647 641 2023-04-27T18:57:59Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Uncharted Space|header1=Creation and development|label2=Development|data2=TBA|label3=Creator(s)|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Uncharted Zone|label6=Guardian(s)|data6=None}} {{Hatnote|Read more [[here]]}} The '''Uncharted Space''', originally referred to as the '''Uncharted Zone''', is a [[Space]] contained within [[Vast Space]]. There is no [[major deity]] associated with it. == Creation and development == In October of 2021, [[BEELETH]] had a dream in which they explored a then-non-existent character universe referred to as the Uncharted Zone. The basis of what they could remember of the dream's plot ended up becoming part of a new Space's lore. == In-universe history == TBA === ''Heavenly Beast'' === {{Hatnote|See the dedicated page for [[Heavenly Beast]].}} TBA; royal knights find and slay the heaven dragon, several locations are introduced and established === ''A Wicked Storm Comes'' === {{Hatnote|See the dedicated page for [[A Wicked Storm Comes]].}} TBA; introduction of the grand ocean and its inhabitants, possibly related to a deity or rus or something idk === ''Repentance Fugue'' === {{Hatnote|See the dedicated page for [[Repentance Fugue]].}} TBA; bunjeecorp-related in some way === ''On a Scale From 1 to 10'' === {{Hatnote|See the dedicated page for [[On a Scale From 1 to 10]].}} TBA; bunjeecorp? or hydra? or both? not entirely sure == Spatial characteristics == As do all Spaces, Uncharted Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Uncharted Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present. === Traits === # [[Souls]] are a very prominent part of the Uncharted Space for a variety of reasons (depending on the area). # [[Kineticism]] is much more prevalent here than in other parts of Vast Space, and it is more common to know some form of it, or at least to be capable of learning it. === Laws === # All laws of the Vast Space also apply to the Uncharted Space whenever possible. # There is a "known world" (Light Side) and an "unknown world" (Dark Side). The Light Side is continuously expanding, but there isn't a consistently proven way to speed it up or slow it down, let alone know which direction it will majorly expand in next. # The Dark Side is unsafe to enter or be near. There have been attempts to enter and explore it, but no adventurers are known to have returned. == Trivia == * As of January 2023, the Uncharted Space is the largest thing in the Vast Space to have been inspired by a dream. * The Uncharted Space is the second subsection of Vast Space to have ever been referred to as a Zone. ** The first Zone was the [[Calamity Zone]], which is now of dubious canon. == Related pages == * [[Calamity Zone]] [[Category:Uncharted Space]] [[Category:Spaces]] [[Category:Stubs]] b8da7529fa6b908d3e27d8753dac3b28230981ce Auophian 0 317 624 2023-04-13T22:09:57Z BEELETH 2 Redirected page to [[Auophilon]] wikitext text/x-wiki #REDIRECT [[Auophilon]] 57819a0df1ed722343294eb4b4313a2204846b0b Auophilon 0 318 625 2023-04-14T00:50:51Z BEELETH 2 Created page with "{{Infobox|above=Auophilon|header1=Creation and development|label2=Development|data2=TBA}} '''Auophilon''' (alternatively called the '''Land of the Blooming Ones''') is a [[location]] in the [[Uncharted Space]] that was inhabited by the Auophi prior to the [[Auophian Massacre]]. to-do: improve phrasing and add more text lel == Creation and development == TBA == In-universe history == Auophilon was the first location in all of the Uncharted Space to ever enter the Li..." wikitext text/x-wiki {{Infobox|above=Auophilon|header1=Creation and development|label2=Development|data2=TBA}} '''Auophilon''' (alternatively called the '''Land of the Blooming Ones''') is a [[location]] in the [[Uncharted Space]] that was inhabited by the Auophi prior to the [[Auophian Massacre]]. to-do: improve phrasing and add more text lel == Creation and development == TBA == In-universe history == Auophilon was the first location in all of the Uncharted Space to ever enter the [[Light Side]], and it was also the first region to develop a thriving community. A variety of species that all spoke one [[language]] and took on a single identity chose to live there: the Auophi, also known as the Blooming Ones (as they greatly admired the growth of flowers and plants in physical and symbolic ways). [[Kineticism]] was initially feared due to potential takeovers by strong individuals or groups, but it would come to be seen as a divine gift. Many people with psychic and/or spatial abilities would be given a position as an [[eye]], and would serve as a medium and diviner. Legends and rumors would develop of various deities making themselves known to the people, but nothing had been seen at the time. At some point, some of the Auophi left their homeland in search of adventure and new territory, and later founded the location that would come to be known as [[Citadelonia]]. The Auophian Pantheon would make their first physical appearance after this. (TBA i need to come up with the rest of the pantheon) [[Qhephion]] was the last of the Pantheon to be born, emerging from the Sacred Tree, killing it in the process with poison he naturally secretes. His birth was considered a curse, and he was scorned for killing such a major part of their community. === ''Heavenly Beast'' === TBA === ''A Wicked Storm Comes'' === TBA === ''Repentance Fugue'' === TBA == Geography == Auophilon territory is generally considered to span from the beginning of the surrounding (TBN Forest) to the end of the (TBN Peninsula). The largest clearing was seen as the heart of the community where people would live, gather, or engage in commerce or ceremony. === Auophilon-kinu === The neighboring (TBN Forest) clears towards the end of the peninsula, and this area was traditionally called "Auophilon-kinu" (or "Lon-kinu" in some instances). == Government == TBA == Culture == The Auophi had a deep connection with a major pantheon that would come to be associated largely with them, as they are generally referred to as the Auophian pantheon. === TBA === One major aspect of Auophian culture was respect for nature. == Trivia == * TBA === Name origin === TBA == Related pages == * TBA [[Category:Locations]] [[Category:Uncharted Space]] [[Category:Locations in Uncharted Space]] [[Category:Stubs]] aa053ca1f68700a82d3715f2e4f084c76644d0c1 626 625 2023-04-27T17:10:38Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Auophilon|header1=Creation and development|label2=Development|data2=TBA}} '''Auophilon''' (alternatively called the '''Land of the Blooming Ones''') is a [[location]] in the [[Uncharted Space]] that was inhabited by the Auophi prior to the [[Auophian Massacre]]. to-do: improve phrasing and add more text lel == Creation and development == TBA == In-universe history == Auophilon was the first location in all of the Uncharted Space to ever enter the [[Light Side]], and it was also the first region to develop a thriving community. A variety of species that all spoke one [[language]] and took on a single identity chose to live there: the Auophi, also known as the Blooming Ones (as they greatly admired the growth of flowers and plants in physical and symbolic ways). [[Kineticism]] was initially feared due to potential takeovers by strong individuals or groups, but it would come to be seen as a divine gift. Many people with psychic and/or spatial abilities would be given a position as an [[eye]], and would serve as a medium and diviner. Legends and rumors would develop of various deities making themselves known to the people, but nothing had been seen at the time. At some point, some of the Auophi left their homeland in search of adventure and new territory, and later founded the location that would come to be known as [[Citadelonia]]. The Auophian Pantheon would make their first physical appearance after this. (TBA i need to come up with the rest of the pantheon) [[Qhephion]] was the last of the Pantheon to be born, emerging from the Sacred Tree, killing it in the process with poison he naturally secretes. His birth was considered a curse, and he was scorned for killing such a major part of their community. === ''Heavenly Beast'' === TBA === ''A Wicked Storm Comes'' === TBA === ''Repentance Fugue'' === TBA == Geography == Auophilon territory is generally considered to span from the beginning of the surrounding (TBN Forest) to the end of the (TBN Peninsula). The largest clearing was seen as the heart of the community where people would live, gather, or engage in commerce or ceremony. === Auophilon-kinu === The neighboring (TBN Forest) clears towards the end of the peninsula, and this area was traditionally called "Auophilon-kinu" (or "Lon-kinu" in some instances). == Government == TBA == Culture == The Auophi had a deep connection with a major pantheon that would come to be associated largely with them, as they are generally referred to as the Auophian pantheon. === TBA === One major aspect of Auophian culture was respect for nature. == Trivia == * Auophilon was originally refered to as Turophi. === Name origin === TBA == Related pages == * TBA [[Category:Locations]] [[Category:Uncharted Space]] [[Category:Locations in Uncharted Space]] [[Category:Stubs]] f23b85cb894ef884a7cf278beab3a316466c5e97 Module:Authority control 828 321 635 2023-04-15T16:46:22Z vast>MSGJ 0 add ^ and $ to patterns for matching Scribunto text/plain require('strict') local config = mw.loadData('Module:Authority control/config') local p = {} local title = mw.title.getCurrentTitle() local namespace = title.namespace local testcases = (string.sub(title.subpageText,1,9) == config.i18n.testcases) local function needsAttention(sortkey) return '[[' .. config.i18n.category .. ':' .. config.i18n.attentioncat .. '|' .. sortkey .. title.text .. ']]' end local function addCat(cat,sortkey) if cat and cat ~= '' and (namespace == 0 or namespace == 14 or testcases) then local redlinkcat = '' if testcases == false and mw.title.new(cat, 14).exists == false then redlinkcat = needsAttention('N') end if sortkey then cat = '[[' .. config.i18n.category .. ':'..cat..'|' .. sortkey .. title.text .. ']]' else cat = '[[' .. config.i18n.category .. ':'..cat..']]' end cat = cat .. redlinkcat return cat else return '' end end local function getCatForId(id,faulty) local cat = 'Articles with ' if faulty then cat = cat .. config.i18n.faulty .. ' ' end cat = cat .. id .. ' ' .. config.i18n.identifiers return addCat(cat) end local function getIdsFromWikidata(qid,property) local function getquals(statement,qualid) if statement.qualifiers and statement.qualifiers['P'..qualid] then return mw.wikibase.renderSnak(statement.qualifiers['P'..qualid][1]) else return false end end local ids = {} if qid then for _, statement in ipairs(mw.wikibase.getBestStatements(qid,property)) do if statement.mainsnak.datavalue then local val = statement.mainsnak.datavalue.value if val then local namedas = getquals(statement,1810) or getquals(statement,742) or '' table.insert(ids,{id=val,name=namedas}) end end end end return ids end local _makelink = function(conf,val,nextid,qid) --validate values and create a link local function tooltip(text,label) if label and label~='' then return mw.getCurrentFrame():expandTemplate{title = "Tooltip", args = {text,label}} else return text end end local link if nextid==1 then if conf.prefix then link = '*' .. conf.prefix .. '\n**' else link = '*' end else link = '\n**' end local valid_value = false if conf.customlink then -- use function to validate and generate link local label = nextid>1 and nextid local newlink= require(config.auxiliary)[conf.customlink](val.id,label) if newlink then link = link .. newlink valid_value = true end else if conf.pattern then -- use pattern to determine validity if defined valid_value = string.match(val.id,'^'..conf.pattern..'$') elseif conf.patterns then for _,pattern in ipairs(conf.patterns) do valid_value = val.id:match('^'..pattern..'$') if valid_value then break end end elseif conf.valid then -- otherwise use function to determine validity valid_value = require(config.auxiliary)[conf.valid](val.id) else -- no validation possible valid_value = val.id end if valid_value then local newlink local label = conf.label if not label or nextid>1 then label = tostring(nextid) end if conf.link then valid_value = valid_value:gsub('%%', '%%%%') newlink = '[' .. mw.ustring.gsub(conf.link,'%$1',valid_value) .. ' ' .. label .. ']' else newlink = valid_value end link = link .. '<span class="uid">'..tooltip(newlink,val.name)..'</span>' end end if valid_value then link = link .. getCatForId(conf.category or conf[1]) else --local preview = require("Module:If preview") local wdlink = qid and '[[:wikidata:' .. qid .. '#P' .. conf.property .. ']]' or '' link = link .. '[[File:345-409 Ambox warning centered.svg|20px|frameless|link=' .. wdlink .. '|' .. config.i18n.The .. ' ' .. conf[1] .. ' ' .. config.i18n.identifier .. ' ' .. val.id .. ' ' .. config.i18n.isnotvalid .. '.]]' if conf.errorcat then link = link .. addCat(conf.errorcat) else link = link .. getCatForId(conf.category or conf[1],true) end link = link .. addCat(config.i18n.allfaultycat,conf[1])-- .. preview._warning({'The '..conf[1]..' id '..val..' is not valid.'}) end return link end --[[==========================================================================]] --[[ Main ]] --[[==========================================================================]] function p.authorityControl(frame) local function resolveQID(qid) if qid then qid = 'Q'..mw.ustring.gsub(qid, '^[Qq]', '') if mw.wikibase.isValidEntityId(qid) and mw.wikibase.entityExists(qid) then local sitelink = mw.wikibase.getSitelink(qid) if sitelink then return mw.wikibase.getEntityIdForTitle(sitelink) or mw.wikibase.getEntity(qid).id end return mw.wikibase.getEntity(qid).id end end end local conf = config.config local parentArgs = frame:getParent().args local auxCats = '' local rct = false -- boolean to track if there are any links to be returned local qid,topic if namespace == 0 then qid = mw.wikibase.getEntityIdForCurrentPage() end if qid then -- article is connected to Wikidata item if parentArgs.qid and (resolveQID(parentArgs.qid) ~= qid) then -- non-matching qid parameter auxCats = auxCats .. needsAttention('D') end else -- page is not connected to any Wikidata item qid = resolveQID(parentArgs.qid) -- check qid parameter if no wikidata item is connected if qid then -- qid parameter is valid, set topic to display topic = mw.wikibase.getLabel(qid) if topic and (mw.ustring.lower(title.subpageText) == mw.ustring.lower(topic)) then -- suppress topic display if subpagename equals topic up to case change topic = nil end elseif parentArgs.qid and parentArgs.qid~='' then -- invalid qid has been supplied, add to tracking cat auxCats = auxCats .. needsAttention('Q') end end if topic and mw.wikibase.getSitelink(qid) then -- make wikilink to article topic = '[[' .. mw.wikibase.getSitelink(qid) .. '|' .. topic .. ']]' end local qids = {} -- setup any additional QIDs if parentArgs.additional and parentArgs.additional ~= '' then for _,v in ipairs(mw.text.split(parentArgs.additional,"%s*,%s*")) do v = resolveQID(v) if v then if v == qid then -- duplicate of qid parameter auxCats = auxCats .. needsAttention('R') end table.insert(qids,v) else -- invalid QID specified auxCats = auxCats .. needsAttention('A') end end end local sections = {} local localparams = false local numsections = 0 for _,_ in ipairs(config.sections) do numsections = numsections + 1 end for _ = 1,#qids+numsections do table.insert(sections,{}) end local qslink = '' -- setup link to add using QuickStatements -- check which identifiers to show/suppress in template local show = {} -- setup list local showall = true local function stripP(pid) if pid:match("^[Pp]%d+$") then pid = mw.ustring.gsub(pid,'[Pp]','') --strip P from property number end if pid:match("^%d+$") then return tonumber(pid) end end local function addshowlist(list) if list and list ~= '' then for _,v in ipairs(mw.text.split(string.lower(list),"%s*,%s*")) do local vprop = stripP(v) if vprop then -- e.g. show=P214 to show one particular property show[vprop] = true else -- e.g. show=arts to use whitelist if config.whitelists[v] then for _,w in ipairs(config.whitelists[v].properties) do show[w] = true end end end end showall = false end end addshowlist(frame.args.show) -- check show= parameter on wrapper template addshowlist(parentArgs.show or parentArgs.country) -- check show parameter on article template if parentArgs.suppress then local suppresslist = mw.text.split(parentArgs.suppress,"%s*,%s*") -- split parameter by comma for _,v in ipairs(suppresslist) do v = stripP(string.upper(v)) if v then show[v] = false auxCats = auxCats .. '[[' .. config.i18n.category .. ':' .. config.i18n.suppressedcat .. ']]' else auxCats = auxCats .. needsAttention('P') end end end local function makeSections(qid,addit) local tval = {} local function parameter_is_used(property) local used = false if property then if tval[property] then if tval[property][1] then used = true end elseif tval[property] == false then -- property has been manually suppressed used = true end end return used end for _, params in ipairs(conf) do tval[params.property] = getIdsFromWikidata(qid, 'P' .. params.property) -- setup table for values with property number as key local showb = true if (show[params.property] == nil) and (show[string.upper(params[1])] == nil ) then showb = showall -- if not specified then depends on showall elseif (show[params.property] == false) or (show[string.upper(params[1])] == false) then -- if either are false then id will be suppressed showb = false end if not showb then tval[params.property] = false -- indicates the identifier is suppressed elseif not addit then local val = parentArgs[mw.ustring.lower(params[1])] or parentArgs[params[1]] if val and val~='' then -- add local parameter to list if not already in localparams = true local bnew = true for _, w in pairs(tval[params.property]) do if val == w.id then bnew = false end end if bnew then -- add new value to table if qid then qslink = qslink .. '%7C%7C' .. qid .. '%7CP' .. params.property .. '%7C%22' .. mw.uri.encode(val,"PATH") .. '%22%7CS143%7CQ328' end table.insert(tval[params.property],{id=val,name=''}) end end end local suppress = false if params.suppressedbyproperty then for _,sc in ipairs(params.suppressedbyproperty) do if parameter_is_used(sc) then suppress = true end end end if tval[params.property] ~= false and not suppress then local tlinks = {} -- setup table for links local nextIdVal = 1 local row = '' for _,val in ipairs(tval[params.property]) do local link = _makelink(params,val,nextIdVal,qid) row = row .. link table.insert(tlinks,link) nextIdVal = nextIdVal + 1 end if nextIdVal>=2 then row = row .. '\n' table.insert(sections[addit or params.section],row) rct = true end end end end local function pencil(qid) if not qid then return '' end local args = { pid = 'identifiers' } -- #target the list of identifiers args.qid = qid return require('Module:EditAtWikidata')._showMessage(args) end makeSections(qid,false) for c = 1,#qids do makeSections(qids[c],numsections+c) end --configure Navbox local outString = '' if rct or localparams then -- there is at least one link to display local Navbox = require('Module:Navbox') local sect,lastsect = 0,0 local navboxArgs = { name = 'Authority control', navboxclass = 'authority-control', bodyclass = 'hlist', state = parentArgs.state or config.i18n.autocollapse, navbar = 'off' } for c=1,numsections+#qids do if #sections[c] ~= 0 then -- section is non-empty sect = sect + 1 lastsect = c local sectname if c <= numsections then -- regular section sectname = config.sections[c].name else -- section from additional qid sectname = mw.wikibase.getLabel(qids[c-numsections]) .. pencil(qids[c-numsections]) end navboxArgs['group' .. c] = sectname navboxArgs['list' .. c] = table.concat(sections[c]) end end if localparams then lastsect = lastsect + 1 sect = sect + 1 navboxArgs['group' .. lastsect] = config.i18n.warning local warning = frame:expandTemplate{title = config.i18n.errortemplate, args = {config.i18n.localparams}} if qslink ~= '' then warning = warning .. ' ' .. config.i18n.movetowd .. '<span class="qs autoconfirmed-show">&#32;[[File:Commons to Wikidata QuickStatements.svg|20px|link=https://quickstatements.toolforge.org/#/v1=' .. qslink .. '|' .. config.i18n.addtowd .. ']]</span>' elseif not qid then if namespace == 0 then warning = warning .. ' ' .. config.i18n.connecttowd elseif namespace==14 or namespace==2 or namespace==118 then warning = warning .. ' ' .. config.i18n.qidcode end end navboxArgs['list' .. lastsect] = warning end if topic then -- display in expanded form with topic navboxArgs.title = config.i18n.aclink .. ' &ndash; ' .. topic .. pencil(qid) elseif sect == 1 then -- special display when only one section if lastsect <= numsections then if config.sections[lastsect].hidelabelwhenalone then -- no special label when only general or other IDs are present navboxArgs['group' .. lastsect] = config.i18n.aclink .. pencil(qid) else -- other regular section navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect] .. pencil(qid) end else -- section from additional qid navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect] end else -- add title to navbox navboxArgs.title = config.i18n.aclink .. pencil(qid) end outString = Navbox._navbox(navboxArgs) end if parentArgs.state then if (parentArgs.state ~= config.i18n.collapsed) and (parentArgs.state ~= config.i18n.expanded) and (parentArgs.state ~= config.i18n.autocollapse) then --invalid state parameter auxCats = auxCats .. needsAttention('S') end end if testcases then auxCats = mw.ustring.gsub(auxCats, '(%[%[)(' .. config.i18n.category .. ')', '%1:%2') --for easier checking end --out outString = outString..auxCats if namespace ~= 0 then outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':Articles)([^%|%]]+)%|?[^%|%]]*(%]%])','%1:%2%3%4') outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':All articles)([^%|%]]+)%|?[^%|%]]*(%]%])','%1:%2%3%4') end local check = require('Module:Check for unknown parameters')._check local sortkey if namespace == 0 then sortkey = '*' .. title.text else sortkey = title.fullText end local tracking = check({ ['unknown'] = '[[' .. config.i18n.category .. ':Pages using authority control with parameters|' .. sortkey .. ']]', ['preview'] = 'Warning: Local parameters are deprecated. Please move any identifiers to Wikidata.', 'show', 'country', 'suppress', 'additional', 'qid', 'state' }, parentArgs) if namespace == 0 -- mainspace or namespace == 14 -- category or namespace == 2 -- user or namespace == 118 then -- draft outString = outString .. tracking end return outString end p.makelink = function(conf,val,nextid,qid) return _makelink(conf,val,nextid,qid) end return p fd33917c2479eef8aee64856dd70475ba02ec26a 636 635 2023-04-27T18:15:37Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain require('strict') local config = mw.loadData('Module:Authority control/config') local p = {} local title = mw.title.getCurrentTitle() local namespace = title.namespace local testcases = (string.sub(title.subpageText,1,9) == config.i18n.testcases) local function needsAttention(sortkey) return '[[' .. config.i18n.category .. ':' .. config.i18n.attentioncat .. '|' .. sortkey .. title.text .. ']]' end local function addCat(cat,sortkey) if cat and cat ~= '' and (namespace == 0 or namespace == 14 or testcases) then local redlinkcat = '' if testcases == false and mw.title.new(cat, 14).exists == false then redlinkcat = needsAttention('N') end if sortkey then cat = '[[' .. config.i18n.category .. ':'..cat..'|' .. sortkey .. title.text .. ']]' else cat = '[[' .. config.i18n.category .. ':'..cat..']]' end cat = cat .. redlinkcat return cat else return '' end end local function getCatForId(id,faulty) local cat = 'Articles with ' if faulty then cat = cat .. config.i18n.faulty .. ' ' end cat = cat .. id .. ' ' .. config.i18n.identifiers return addCat(cat) end local function getIdsFromWikidata(qid,property) local function getquals(statement,qualid) if statement.qualifiers and statement.qualifiers['P'..qualid] then return mw.wikibase.renderSnak(statement.qualifiers['P'..qualid][1]) else return false end end local ids = {} if qid then for _, statement in ipairs(mw.wikibase.getBestStatements(qid,property)) do if statement.mainsnak.datavalue then local val = statement.mainsnak.datavalue.value if val then local namedas = getquals(statement,1810) or getquals(statement,742) or '' table.insert(ids,{id=val,name=namedas}) end end end end return ids end local _makelink = function(conf,val,nextid,qid) --validate values and create a link local function tooltip(text,label) if label and label~='' then return mw.getCurrentFrame():expandTemplate{title = "Tooltip", args = {text,label}} else return text end end local link if nextid==1 then if conf.prefix then link = '*' .. conf.prefix .. '\n**' else link = '*' end else link = '\n**' end local valid_value = false if conf.customlink then -- use function to validate and generate link local label = nextid>1 and nextid local newlink= require(config.auxiliary)[conf.customlink](val.id,label) if newlink then link = link .. newlink valid_value = true end else if conf.pattern then -- use pattern to determine validity if defined valid_value = string.match(val.id,'^'..conf.pattern..'$') elseif conf.patterns then for _,pattern in ipairs(conf.patterns) do valid_value = val.id:match('^'..pattern..'$') if valid_value then break end end elseif conf.valid then -- otherwise use function to determine validity valid_value = require(config.auxiliary)[conf.valid](val.id) else -- no validation possible valid_value = val.id end if valid_value then local newlink local label = conf.label if not label or nextid>1 then label = tostring(nextid) end if conf.link then valid_value = valid_value:gsub('%%', '%%%%') newlink = '[' .. mw.ustring.gsub(conf.link,'%$1',valid_value) .. ' ' .. label .. ']' else newlink = valid_value end link = link .. '<span class="uid">'..tooltip(newlink,val.name)..'</span>' end end if valid_value then link = link .. getCatForId(conf.category or conf[1]) else --local preview = require("Module:If preview") local wdlink = qid and '[[:wikidata:' .. qid .. '#P' .. conf.property .. ']]' or '' link = link .. '[[File:345-409 Ambox warning centered.svg|20px|frameless|link=' .. wdlink .. '|' .. config.i18n.The .. ' ' .. conf[1] .. ' ' .. config.i18n.identifier .. ' ' .. val.id .. ' ' .. config.i18n.isnotvalid .. '.]]' if conf.errorcat then link = link .. addCat(conf.errorcat) else link = link .. getCatForId(conf.category or conf[1],true) end link = link .. addCat(config.i18n.allfaultycat,conf[1])-- .. preview._warning({'The '..conf[1]..' id '..val..' is not valid.'}) end return link end --[[==========================================================================]] --[[ Main ]] --[[==========================================================================]] function p.authorityControl(frame) local function resolveQID(qid) if qid then qid = 'Q'..mw.ustring.gsub(qid, '^[Qq]', '') if mw.wikibase.isValidEntityId(qid) and mw.wikibase.entityExists(qid) then local sitelink = mw.wikibase.getSitelink(qid) if sitelink then return mw.wikibase.getEntityIdForTitle(sitelink) or mw.wikibase.getEntity(qid).id end return mw.wikibase.getEntity(qid).id end end end local conf = config.config local parentArgs = frame:getParent().args local auxCats = '' local rct = false -- boolean to track if there are any links to be returned local qid,topic if namespace == 0 then qid = mw.wikibase.getEntityIdForCurrentPage() end if qid then -- article is connected to Wikidata item if parentArgs.qid and (resolveQID(parentArgs.qid) ~= qid) then -- non-matching qid parameter auxCats = auxCats .. needsAttention('D') end else -- page is not connected to any Wikidata item qid = resolveQID(parentArgs.qid) -- check qid parameter if no wikidata item is connected if qid then -- qid parameter is valid, set topic to display topic = mw.wikibase.getLabel(qid) if topic and (mw.ustring.lower(title.subpageText) == mw.ustring.lower(topic)) then -- suppress topic display if subpagename equals topic up to case change topic = nil end elseif parentArgs.qid and parentArgs.qid~='' then -- invalid qid has been supplied, add to tracking cat auxCats = auxCats .. needsAttention('Q') end end if topic and mw.wikibase.getSitelink(qid) then -- make wikilink to article topic = '[[' .. mw.wikibase.getSitelink(qid) .. '|' .. topic .. ']]' end local qids = {} -- setup any additional QIDs if parentArgs.additional and parentArgs.additional ~= '' then for _,v in ipairs(mw.text.split(parentArgs.additional,"%s*,%s*")) do v = resolveQID(v) if v then if v == qid then -- duplicate of qid parameter auxCats = auxCats .. needsAttention('R') end table.insert(qids,v) else -- invalid QID specified auxCats = auxCats .. needsAttention('A') end end end local sections = {} local localparams = false local numsections = 0 for _,_ in ipairs(config.sections) do numsections = numsections + 1 end for _ = 1,#qids+numsections do table.insert(sections,{}) end local qslink = '' -- setup link to add using QuickStatements -- check which identifiers to show/suppress in template local show = {} -- setup list local showall = true local function stripP(pid) if pid:match("^[Pp]%d+$") then pid = mw.ustring.gsub(pid,'[Pp]','') --strip P from property number end if pid:match("^%d+$") then return tonumber(pid) end end local function addshowlist(list) if list and list ~= '' then for _,v in ipairs(mw.text.split(string.lower(list),"%s*,%s*")) do local vprop = stripP(v) if vprop then -- e.g. show=P214 to show one particular property show[vprop] = true else -- e.g. show=arts to use whitelist if config.whitelists[v] then for _,w in ipairs(config.whitelists[v].properties) do show[w] = true end end end end showall = false end end addshowlist(frame.args.show) -- check show= parameter on wrapper template addshowlist(parentArgs.show or parentArgs.country) -- check show parameter on article template if parentArgs.suppress then local suppresslist = mw.text.split(parentArgs.suppress,"%s*,%s*") -- split parameter by comma for _,v in ipairs(suppresslist) do v = stripP(string.upper(v)) if v then show[v] = false auxCats = auxCats .. '[[' .. config.i18n.category .. ':' .. config.i18n.suppressedcat .. ']]' else auxCats = auxCats .. needsAttention('P') end end end local function makeSections(qid,addit) local tval = {} local function parameter_is_used(property) local used = false if property then if tval[property] then if tval[property][1] then used = true end elseif tval[property] == false then -- property has been manually suppressed used = true end end return used end for _, params in ipairs(conf) do tval[params.property] = getIdsFromWikidata(qid, 'P' .. params.property) -- setup table for values with property number as key local showb = true if (show[params.property] == nil) and (show[string.upper(params[1])] == nil ) then showb = showall -- if not specified then depends on showall elseif (show[params.property] == false) or (show[string.upper(params[1])] == false) then -- if either are false then id will be suppressed showb = false end if not showb then tval[params.property] = false -- indicates the identifier is suppressed elseif not addit then local val = parentArgs[mw.ustring.lower(params[1])] or parentArgs[params[1]] if val and val~='' then -- add local parameter to list if not already in localparams = true local bnew = true for _, w in pairs(tval[params.property]) do if val == w.id then bnew = false end end if bnew then -- add new value to table if qid then qslink = qslink .. '%7C%7C' .. qid .. '%7CP' .. params.property .. '%7C%22' .. mw.uri.encode(val,"PATH") .. '%22%7CS143%7CQ328' end table.insert(tval[params.property],{id=val,name=''}) end end end local suppress = false if params.suppressedbyproperty then for _,sc in ipairs(params.suppressedbyproperty) do if parameter_is_used(sc) then suppress = true end end end if tval[params.property] ~= false and not suppress then local tlinks = {} -- setup table for links local nextIdVal = 1 local row = '' for _,val in ipairs(tval[params.property]) do local link = _makelink(params,val,nextIdVal,qid) row = row .. link table.insert(tlinks,link) nextIdVal = nextIdVal + 1 end if nextIdVal>=2 then row = row .. '\n' table.insert(sections[addit or params.section],row) rct = true end end end end local function pencil(qid) if not qid then return '' end local args = { pid = 'identifiers' } -- #target the list of identifiers args.qid = qid return require('Module:EditAtWikidata')._showMessage(args) end makeSections(qid,false) for c = 1,#qids do makeSections(qids[c],numsections+c) end --configure Navbox local outString = '' if rct or localparams then -- there is at least one link to display local Navbox = require('Module:Navbox') local sect,lastsect = 0,0 local navboxArgs = { name = 'Authority control', navboxclass = 'authority-control', bodyclass = 'hlist', state = parentArgs.state or config.i18n.autocollapse, navbar = 'off' } for c=1,numsections+#qids do if #sections[c] ~= 0 then -- section is non-empty sect = sect + 1 lastsect = c local sectname if c <= numsections then -- regular section sectname = config.sections[c].name else -- section from additional qid sectname = mw.wikibase.getLabel(qids[c-numsections]) .. pencil(qids[c-numsections]) end navboxArgs['group' .. c] = sectname navboxArgs['list' .. c] = table.concat(sections[c]) end end if localparams then lastsect = lastsect + 1 sect = sect + 1 navboxArgs['group' .. lastsect] = config.i18n.warning local warning = frame:expandTemplate{title = config.i18n.errortemplate, args = {config.i18n.localparams}} if qslink ~= '' then warning = warning .. ' ' .. config.i18n.movetowd .. '<span class="qs autoconfirmed-show">&#32;[[File:Commons to Wikidata QuickStatements.svg|20px|link=https://quickstatements.toolforge.org/#/v1=' .. qslink .. '|' .. config.i18n.addtowd .. ']]</span>' elseif not qid then if namespace == 0 then warning = warning .. ' ' .. config.i18n.connecttowd elseif namespace==14 or namespace==2 or namespace==118 then warning = warning .. ' ' .. config.i18n.qidcode end end navboxArgs['list' .. lastsect] = warning end if topic then -- display in expanded form with topic navboxArgs.title = config.i18n.aclink .. ' &ndash; ' .. topic .. pencil(qid) elseif sect == 1 then -- special display when only one section if lastsect <= numsections then if config.sections[lastsect].hidelabelwhenalone then -- no special label when only general or other IDs are present navboxArgs['group' .. lastsect] = config.i18n.aclink .. pencil(qid) else -- other regular section navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect] .. pencil(qid) end else -- section from additional qid navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect] end else -- add title to navbox navboxArgs.title = config.i18n.aclink .. pencil(qid) end outString = Navbox._navbox(navboxArgs) end if parentArgs.state then if (parentArgs.state ~= config.i18n.collapsed) and (parentArgs.state ~= config.i18n.expanded) and (parentArgs.state ~= config.i18n.autocollapse) then --invalid state parameter auxCats = auxCats .. needsAttention('S') end end if testcases then auxCats = mw.ustring.gsub(auxCats, '(%[%[)(' .. config.i18n.category .. ')', '%1:%2') --for easier checking end --out outString = outString..auxCats if namespace ~= 0 then outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':Articles)([^%|%]]+)%|?[^%|%]]*(%]%])','%1:%2%3%4') outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':All articles)([^%|%]]+)%|?[^%|%]]*(%]%])','%1:%2%3%4') end local check = require('Module:Check for unknown parameters')._check local sortkey if namespace == 0 then sortkey = '*' .. title.text else sortkey = title.fullText end local tracking = check({ ['unknown'] = '[[' .. config.i18n.category .. ':Pages using authority control with parameters|' .. sortkey .. ']]', ['preview'] = 'Warning: Local parameters are deprecated. Please move any identifiers to Wikidata.', 'show', 'country', 'suppress', 'additional', 'qid', 'state' }, parentArgs) if namespace == 0 -- mainspace or namespace == 14 -- category or namespace == 2 -- user or namespace == 118 then -- draft outString = outString .. tracking end return outString end p.makelink = function(conf,val,nextid,qid) return _makelink(conf,val,nextid,qid) end return p fd33917c2479eef8aee64856dd70475ba02ec26a Module:Navbox 828 76 633 151 2023-04-17T13:46:15Z vast>Lemondoge 0 Fixing ternary expression short-circuit ("foo and nil or bar" is always equal to "bar", but "not foo and bar or nil" produces the intended effect) Scribunto text/plain local p = {} local navbar = require('Module:Navbar')._navbar local cfg = mw.loadData('Module:Navbox/configuration') local getArgs -- lazily initialized local args local format = string.format local function striped(wikitext, border) -- Return wikitext with markers replaced for odd/even striping. -- Child (subgroup) navboxes are flagged with a category that is removed -- by parent navboxes. The result is that the category shows all pages -- where a child navbox is not contained in a parent navbox. local orphanCat = cfg.category.orphan if border == cfg.keyword.border_subgroup and args[cfg.arg.orphan] ~= cfg.keyword.orphan_yes then -- No change; striping occurs in outermost navbox. return wikitext .. orphanCat end local first, second = cfg.class.navbox_odd_part, cfg.class.navbox_even_part if args[cfg.arg.evenodd] then if args[cfg.arg.evenodd] == cfg.keyword.evenodd_swap then first, second = second, first else first = args[cfg.arg.evenodd] second = first end end local changer if first == second then changer = first else local index = 0 changer = function (code) if code == '0' then -- Current occurrence is for a group before a nested table. -- Set it to first as a valid although pointless class. -- The next occurrence will be the first row after a title -- in a subgroup and will also be first. index = 0 return first end index = index + 1 return index % 2 == 1 and first or second end end local regex = orphanCat:gsub('([%[%]])', '%%%1') return (wikitext:gsub(regex, ''):gsub(cfg.marker.regex, changer)) -- () omits gsub count end local function processItem(item, nowrapitems) if item:sub(1, 2) == '{|' then -- Applying nowrap to lines in a table does not make sense. -- Add newlines to compensate for trim of x in |parm=x in a template. return '\n' .. item ..'\n' end if nowrapitems == cfg.keyword.nowrapitems_yes then local lines = {} for line in (item .. '\n'):gmatch('([^\n]*)\n') do local prefix, content = line:match('^([*:;#]+)%s*(.*)') if prefix and not content:match(cfg.pattern.nowrap) then line = format(cfg.nowrap_item, prefix, content) end table.insert(lines, line) end item = table.concat(lines, '\n') end if item:match('^[*:;#]') then return '\n' .. item ..'\n' end return item end local function has_navbar() return args[cfg.arg.navbar] ~= cfg.keyword.navbar_off and args[cfg.arg.navbar] ~= cfg.keyword.navbar_plain and ( args[cfg.arg.name] or mw.getCurrentFrame():getParent():getTitle():gsub(cfg.pattern.sandbox, '') ~= cfg.pattern.navbox ) end local function renderNavBar(titleCell) if has_navbar() then titleCell:wikitext(navbar{ [cfg.navbar.name] = args[cfg.arg.name], [cfg.navbar.mini] = 1, [cfg.navbar.fontstyle] = (args[cfg.arg.basestyle] or '') .. ';' .. (args[cfg.arg.titlestyle] or '') .. ';background:none transparent;border:none;box-shadow:none;padding:0;' }) end end local function renderTitleRow(tbl) if not args[cfg.arg.title] then return end local titleRow = tbl:tag('tr') local titleCell = titleRow:tag('th'):attr('scope', 'col') local titleColspan = 2 if args[cfg.arg.imageleft] then titleColspan = titleColspan + 1 end if args[cfg.arg.image] then titleColspan = titleColspan + 1 end titleCell :cssText(args[cfg.arg.basestyle]) :cssText(args[cfg.arg.titlestyle]) :addClass(cfg.class.navbox_title) :attr('colspan', titleColspan) renderNavBar(titleCell) titleCell :tag('div') -- id for aria-labelledby attribute :attr('id', mw.uri.anchorEncode(args[cfg.arg.title])) :addClass(args[cfg.arg.titleclass]) :css('font-size', '114%') :css('margin', '0 4em') :wikitext(processItem(args[cfg.arg.title])) end local function getAboveBelowColspan() local ret = 2 if args[cfg.arg.imageleft] then ret = ret + 1 end if args[cfg.arg.image] then ret = ret + 1 end return ret end local function renderAboveRow(tbl) if not args[cfg.arg.above] then return end tbl:tag('tr') :tag('td') :addClass(cfg.class.navbox_abovebelow) :addClass(args[cfg.arg.aboveclass]) :cssText(args[cfg.arg.basestyle]) :cssText(args[cfg.arg.abovestyle]) :attr('colspan', getAboveBelowColspan()) :tag('div') -- id for aria-labelledby attribute, if no title :attr('id', (not args[cfg.arg.title]) and mw.uri.anchorEncode(args[cfg.arg.above]) or nil) :wikitext(processItem(args[cfg.arg.above], args[cfg.arg.nowrapitems])) end local function renderBelowRow(tbl) if not args[cfg.arg.below] then return end tbl:tag('tr') :tag('td') :addClass(cfg.class.navbox_abovebelow) :addClass(args[cfg.arg.belowclass]) :cssText(args[cfg.arg.basestyle]) :cssText(args[cfg.arg.belowstyle]) :attr('colspan', getAboveBelowColspan()) :tag('div') :wikitext(processItem(args[cfg.arg.below], args[cfg.arg.nowrapitems])) end local function renderListRow(tbl, index, listnum, listnums_size) local row = tbl:tag('tr') if index == 1 and args[cfg.arg.imageleft] then row :tag('td') :addClass(cfg.class.noviewer) :addClass(cfg.class.navbox_image) :addClass(args[cfg.arg.imageclass]) :css('width', '1px') -- Minimize width :css('padding', '0 2px 0 0') :cssText(args[cfg.arg.imageleftstyle]) :attr('rowspan', listnums_size) :tag('div') :wikitext(processItem(args[cfg.arg.imageleft])) end local group_and_num = format(cfg.arg.group_and_num, listnum) local groupstyle_and_num = format(cfg.arg.groupstyle_and_num, listnum) if args[group_and_num] then local groupCell = row:tag('th') -- id for aria-labelledby attribute, if lone group with no title or above if listnum == 1 and not (args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group2]) then groupCell :attr('id', mw.uri.anchorEncode(args[cfg.arg.group1])) end groupCell :attr('scope', 'row') :addClass(cfg.class.navbox_group) :addClass(args[cfg.arg.groupclass]) :cssText(args[cfg.arg.basestyle]) -- If groupwidth not specified, minimize width :css('width', args[cfg.arg.groupwidth] or '1%') groupCell :cssText(args[cfg.arg.groupstyle]) :cssText(args[groupstyle_and_num]) :wikitext(args[group_and_num]) end local listCell = row:tag('td') if args[group_and_num] then listCell :addClass(cfg.class.navbox_list_with_group) else listCell:attr('colspan', 2) end if not args[cfg.arg.groupwidth] then listCell:css('width', '100%') end local rowstyle -- usually nil so cssText(rowstyle) usually adds nothing if index % 2 == 1 then rowstyle = args[cfg.arg.oddstyle] else rowstyle = args[cfg.arg.evenstyle] end local list_and_num = format(cfg.arg.list_and_num, listnum) local listText = args[list_and_num] local oddEven = cfg.marker.oddeven if listText:sub(1, 12) == '</div><table' then -- Assume list text is for a subgroup navbox so no automatic striping for this row. oddEven = listText:find(cfg.pattern.navbox_title) and cfg.marker.restart or cfg.class.navbox_odd_part end local liststyle_and_num = format(cfg.arg.liststyle_and_num, listnum) local listclass_and_num = format(cfg.arg.listclass_and_num, listnum) listCell :css('padding', '0') :cssText(args[cfg.arg.liststyle]) :cssText(rowstyle) :cssText(args[liststyle_and_num]) :addClass(cfg.class.navbox_list) :addClass(cfg.class.navbox_part .. oddEven) :addClass(args[cfg.arg.listclass]) :addClass(args[listclass_and_num]) :tag('div') :css('padding', (index == 1 and args[cfg.arg.list1padding]) or args[cfg.arg.listpadding] or '0 0.25em' ) :wikitext(processItem(listText, args[cfg.arg.nowrapitems])) if index == 1 and args[cfg.arg.image] then row :tag('td') :addClass(cfg.class.noviewer) :addClass(cfg.class.navbox_image) :addClass(args[cfg.arg.imageclass]) :css('width', '1px') -- Minimize width :css('padding', '0 0 0 2px') :cssText(args[cfg.arg.imagestyle]) :attr('rowspan', listnums_size) :tag('div') :wikitext(processItem(args[cfg.arg.image])) end end local function has_list_class(htmlclass) local patterns = { '^' .. htmlclass .. '$', '%s' .. htmlclass .. '$', '^' .. htmlclass .. '%s', '%s' .. htmlclass .. '%s' } for arg, _ in pairs(args) do if type(arg) == 'string' and mw.ustring.find(arg, cfg.pattern.class) then for _, pattern in ipairs(patterns) do if mw.ustring.find(args[arg] or '', pattern) then return true end end end end return false end -- there are a lot of list classes in the wild, so we add their TemplateStyles local function add_list_styles() local frame = mw.getCurrentFrame() local function add_list_templatestyles(htmlclass, templatestyles) if has_list_class(htmlclass) then return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles } } else return '' end end local hlist_styles = add_list_templatestyles('hlist', cfg.hlist_templatestyles) local plainlist_styles = add_list_templatestyles('plainlist', cfg.plainlist_templatestyles) -- a second workaround for [[phab:T303378]] -- when that issue is fixed, we can actually use has_navbar not to emit the -- tag here if we want if has_navbar() and hlist_styles == '' then hlist_styles = frame:extensionTag{ name = 'templatestyles', args = { src = cfg.hlist_templatestyles } } end -- hlist -> plainlist is best-effort to preserve old Common.css ordering. -- this ordering is not a guarantee because most navboxes will emit only -- one of these classes [hlist_note] return hlist_styles .. plainlist_styles end local function needsHorizontalLists(border) if border == cfg.keyword.border_subgroup or args[cfg.arg.tracking] == cfg.keyword.tracking_no then return false end return not has_list_class(cfg.pattern.hlist) and not has_list_class(cfg.pattern.plainlist) end local function hasBackgroundColors() for _, key in ipairs({cfg.arg.titlestyle, cfg.arg.groupstyle, cfg.arg.basestyle, cfg.arg.abovestyle, cfg.arg.belowstyle}) do if tostring(args[key]):find('background', 1, true) then return true end end return false end local function hasBorders() for _, key in ipairs({cfg.arg.groupstyle, cfg.arg.basestyle, cfg.arg.abovestyle, cfg.arg.belowstyle}) do if tostring(args[key]):find('border', 1, true) then return true end end return false end local function isIllegible() local styleratio = require('Module:Color contrast')._styleratio for key, style in pairs(args) do if tostring(key):match(cfg.pattern.style) then if styleratio{mw.text.unstripNoWiki(style)} < 4.5 then return true end end end return false end local function getTrackingCategories(border) local cats = {} if needsHorizontalLists(border) then table.insert(cats, cfg.category.horizontal_lists) end if hasBackgroundColors() then table.insert(cats, cfg.category.background_colors) end if isIllegible() then table.insert(cats, cfg.category.illegible) end if hasBorders() then table.insert(cats, cfg.category.borders) end return cats end local function renderTrackingCategories(builder, border) local title = mw.title.getCurrentTitle() if title.namespace ~= 10 then return end -- not in template space local subpage = title.subpageText if subpage == cfg.keyword.subpage_doc or subpage == cfg.keyword.subpage_sandbox or subpage == cfg.keyword.subpage_testcases then return end for _, cat in ipairs(getTrackingCategories(border)) do builder:wikitext('[[Category:' .. cat .. ']]') end end local function renderMainTable(border, listnums) local tbl = mw.html.create('table') :addClass(cfg.class.nowraplinks) :addClass(args[cfg.arg.bodyclass]) local state = args[cfg.arg.state] if args[cfg.arg.title] and state ~= cfg.keyword.state_plain and state ~= cfg.keyword.state_off then if state == cfg.keyword.state_collapsed then state = cfg.class.collapsed end tbl :addClass(cfg.class.collapsible) :addClass(state or cfg.class.autocollapse) end tbl:css('border-spacing', 0) if border == cfg.keyword.border_subgroup or border == cfg.keyword.border_none then tbl :addClass(cfg.class.navbox_subgroup) :cssText(args[cfg.arg.bodystyle]) :cssText(args[cfg.arg.style]) else -- regular navbox - bodystyle and style will be applied to the wrapper table tbl :addClass(cfg.class.navbox_inner) :css('background', 'transparent') :css('color', 'inherit') end tbl:cssText(args[cfg.arg.innerstyle]) renderTitleRow(tbl) renderAboveRow(tbl) local listnums_size = #listnums for i, listnum in ipairs(listnums) do renderListRow(tbl, i, listnum, listnums_size) end renderBelowRow(tbl) return tbl end local function add_navbox_styles(hiding_templatestyles) local frame = mw.getCurrentFrame() -- This is a lambda so that it doesn't need the frame as a parameter local function add_user_styles(templatestyles) if templatestyles and templatestyles ~= '' then return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles } } end return '' end -- get templatestyles. load base from config so that Lua only needs to do -- the work once of parser tag expansion local base_templatestyles = cfg.templatestyles local templatestyles = add_user_styles(args[cfg.arg.templatestyles]) local child_templatestyles = add_user_styles(args[cfg.arg.child_templatestyles]) -- The 'navbox-styles' div exists to wrap the styles to work around T200206 -- more elegantly. Instead of combinatorial rules, this ends up being linear -- number of CSS rules. return mw.html.create('div') :addClass(cfg.class.navbox_styles) :wikitext( add_list_styles() .. -- see [hlist_note] applied to 'before base_templatestyles' base_templatestyles .. templatestyles .. child_templatestyles .. table.concat(hiding_templatestyles) ) :done() end -- work around [[phab:T303378]] -- for each arg: find all the templatestyles strip markers, insert them into a -- table. then remove all templatestyles markers from the arg local function move_hiding_templatestyles(args) local gfind = string.gfind local gsub = string.gsub local templatestyles_markers = {} local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)' for k, arg in pairs(args) do for marker in gfind(arg, strip_marker_pattern) do table.insert(templatestyles_markers, marker) end args[k] = gsub(arg, strip_marker_pattern, '') end return templatestyles_markers end function p._navbox(navboxArgs) args = navboxArgs local hiding_templatestyles = move_hiding_templatestyles(args) local listnums = {} for k, _ in pairs(args) do if type(k) == 'string' then local listnum = k:match(cfg.pattern.listnum) if listnum then table.insert(listnums, tonumber(listnum)) end end end table.sort(listnums) local border = mw.text.trim(args[cfg.arg.border] or args[1] or '') if border == cfg.keyword.border_child then border = cfg.keyword.border_subgroup end -- render the main body of the navbox local tbl = renderMainTable(border, listnums) local res = mw.html.create() -- render the appropriate wrapper for the navbox, based on the border param if border == cfg.keyword.border_none then res:node(add_navbox_styles(hiding_templatestyles)) local nav = res:tag('div') :attr('role', 'navigation') :node(tbl) -- aria-labelledby title, otherwise above, otherwise lone group if args[cfg.arg.title] or args[cfg.arg.above] or (args[cfg.arg.group1] and not args[cfg.arg.group2]) then nav:attr( 'aria-labelledby', mw.uri.anchorEncode( args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1] ) ) else nav:attr('aria-label', cfg.aria_label) end elseif border == cfg.keyword.border_subgroup then -- We assume that this navbox is being rendered in a list cell of a -- parent navbox, and is therefore inside a div with padding:0em 0.25em. -- We start with a </div> to avoid the padding being applied, and at the -- end add a <div> to balance out the parent's </div> res :wikitext('</div>') :node(tbl) :wikitext('<div>') else res:node(add_navbox_styles(hiding_templatestyles)) local nav = res:tag('div') :attr('role', 'navigation') :addClass(cfg.class.navbox) :addClass(args[cfg.arg.navboxclass]) :cssText(args[cfg.arg.bodystyle]) :cssText(args[cfg.arg.style]) :css('padding', '3px') :node(tbl) -- aria-labelledby title, otherwise above, otherwise lone group if args[cfg.arg.title] or args[cfg.arg.above] or (args[cfg.arg.group1] and not args[cfg.arg.group2]) then nav:attr( 'aria-labelledby', mw.uri.anchorEncode(args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1]) ) else nav:attr('aria-label', cfg.aria_label) end end if (args[cfg.arg.nocat] or cfg.keyword.nocat_false):lower() == cfg.keyword.nocat_false then renderTrackingCategories(res, border) end return striped(tostring(res), border) end function p.navbox(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end args = getArgs(frame, {wrappers = {cfg.pattern.navbox}}) -- Read the arguments in the order they'll be output in, to make references -- number in the right order. local _ _ = args[cfg.arg.title] _ = args[cfg.arg.above] -- Limit this to 20 as covering 'most' cases (that's a SWAG) and because -- iterator approach won't work here for i = 1, 20 do _ = args[format(cfg.arg.group_and_num, i)] _ = args[format(cfg.arg.list_and_num, i)] end _ = args[cfg.arg.below] return p._navbox(args) end return p 5abf477a4f472e7b9f2543257d84327000684555 634 633 2023-04-27T18:15:36Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain local p = {} local navbar = require('Module:Navbar')._navbar local cfg = mw.loadData('Module:Navbox/configuration') local getArgs -- lazily initialized local args local format = string.format local function striped(wikitext, border) -- Return wikitext with markers replaced for odd/even striping. -- Child (subgroup) navboxes are flagged with a category that is removed -- by parent navboxes. The result is that the category shows all pages -- where a child navbox is not contained in a parent navbox. local orphanCat = cfg.category.orphan if border == cfg.keyword.border_subgroup and args[cfg.arg.orphan] ~= cfg.keyword.orphan_yes then -- No change; striping occurs in outermost navbox. return wikitext .. orphanCat end local first, second = cfg.class.navbox_odd_part, cfg.class.navbox_even_part if args[cfg.arg.evenodd] then if args[cfg.arg.evenodd] == cfg.keyword.evenodd_swap then first, second = second, first else first = args[cfg.arg.evenodd] second = first end end local changer if first == second then changer = first else local index = 0 changer = function (code) if code == '0' then -- Current occurrence is for a group before a nested table. -- Set it to first as a valid although pointless class. -- The next occurrence will be the first row after a title -- in a subgroup and will also be first. index = 0 return first end index = index + 1 return index % 2 == 1 and first or second end end local regex = orphanCat:gsub('([%[%]])', '%%%1') return (wikitext:gsub(regex, ''):gsub(cfg.marker.regex, changer)) -- () omits gsub count end local function processItem(item, nowrapitems) if item:sub(1, 2) == '{|' then -- Applying nowrap to lines in a table does not make sense. -- Add newlines to compensate for trim of x in |parm=x in a template. return '\n' .. item ..'\n' end if nowrapitems == cfg.keyword.nowrapitems_yes then local lines = {} for line in (item .. '\n'):gmatch('([^\n]*)\n') do local prefix, content = line:match('^([*:;#]+)%s*(.*)') if prefix and not content:match(cfg.pattern.nowrap) then line = format(cfg.nowrap_item, prefix, content) end table.insert(lines, line) end item = table.concat(lines, '\n') end if item:match('^[*:;#]') then return '\n' .. item ..'\n' end return item end local function has_navbar() return args[cfg.arg.navbar] ~= cfg.keyword.navbar_off and args[cfg.arg.navbar] ~= cfg.keyword.navbar_plain and ( args[cfg.arg.name] or mw.getCurrentFrame():getParent():getTitle():gsub(cfg.pattern.sandbox, '') ~= cfg.pattern.navbox ) end local function renderNavBar(titleCell) if has_navbar() then titleCell:wikitext(navbar{ [cfg.navbar.name] = args[cfg.arg.name], [cfg.navbar.mini] = 1, [cfg.navbar.fontstyle] = (args[cfg.arg.basestyle] or '') .. ';' .. (args[cfg.arg.titlestyle] or '') .. ';background:none transparent;border:none;box-shadow:none;padding:0;' }) end end local function renderTitleRow(tbl) if not args[cfg.arg.title] then return end local titleRow = tbl:tag('tr') local titleCell = titleRow:tag('th'):attr('scope', 'col') local titleColspan = 2 if args[cfg.arg.imageleft] then titleColspan = titleColspan + 1 end if args[cfg.arg.image] then titleColspan = titleColspan + 1 end titleCell :cssText(args[cfg.arg.basestyle]) :cssText(args[cfg.arg.titlestyle]) :addClass(cfg.class.navbox_title) :attr('colspan', titleColspan) renderNavBar(titleCell) titleCell :tag('div') -- id for aria-labelledby attribute :attr('id', mw.uri.anchorEncode(args[cfg.arg.title])) :addClass(args[cfg.arg.titleclass]) :css('font-size', '114%') :css('margin', '0 4em') :wikitext(processItem(args[cfg.arg.title])) end local function getAboveBelowColspan() local ret = 2 if args[cfg.arg.imageleft] then ret = ret + 1 end if args[cfg.arg.image] then ret = ret + 1 end return ret end local function renderAboveRow(tbl) if not args[cfg.arg.above] then return end tbl:tag('tr') :tag('td') :addClass(cfg.class.navbox_abovebelow) :addClass(args[cfg.arg.aboveclass]) :cssText(args[cfg.arg.basestyle]) :cssText(args[cfg.arg.abovestyle]) :attr('colspan', getAboveBelowColspan()) :tag('div') -- id for aria-labelledby attribute, if no title :attr('id', (not args[cfg.arg.title]) and mw.uri.anchorEncode(args[cfg.arg.above]) or nil) :wikitext(processItem(args[cfg.arg.above], args[cfg.arg.nowrapitems])) end local function renderBelowRow(tbl) if not args[cfg.arg.below] then return end tbl:tag('tr') :tag('td') :addClass(cfg.class.navbox_abovebelow) :addClass(args[cfg.arg.belowclass]) :cssText(args[cfg.arg.basestyle]) :cssText(args[cfg.arg.belowstyle]) :attr('colspan', getAboveBelowColspan()) :tag('div') :wikitext(processItem(args[cfg.arg.below], args[cfg.arg.nowrapitems])) end local function renderListRow(tbl, index, listnum, listnums_size) local row = tbl:tag('tr') if index == 1 and args[cfg.arg.imageleft] then row :tag('td') :addClass(cfg.class.noviewer) :addClass(cfg.class.navbox_image) :addClass(args[cfg.arg.imageclass]) :css('width', '1px') -- Minimize width :css('padding', '0 2px 0 0') :cssText(args[cfg.arg.imageleftstyle]) :attr('rowspan', listnums_size) :tag('div') :wikitext(processItem(args[cfg.arg.imageleft])) end local group_and_num = format(cfg.arg.group_and_num, listnum) local groupstyle_and_num = format(cfg.arg.groupstyle_and_num, listnum) if args[group_and_num] then local groupCell = row:tag('th') -- id for aria-labelledby attribute, if lone group with no title or above if listnum == 1 and not (args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group2]) then groupCell :attr('id', mw.uri.anchorEncode(args[cfg.arg.group1])) end groupCell :attr('scope', 'row') :addClass(cfg.class.navbox_group) :addClass(args[cfg.arg.groupclass]) :cssText(args[cfg.arg.basestyle]) -- If groupwidth not specified, minimize width :css('width', args[cfg.arg.groupwidth] or '1%') groupCell :cssText(args[cfg.arg.groupstyle]) :cssText(args[groupstyle_and_num]) :wikitext(args[group_and_num]) end local listCell = row:tag('td') if args[group_and_num] then listCell :addClass(cfg.class.navbox_list_with_group) else listCell:attr('colspan', 2) end if not args[cfg.arg.groupwidth] then listCell:css('width', '100%') end local rowstyle -- usually nil so cssText(rowstyle) usually adds nothing if index % 2 == 1 then rowstyle = args[cfg.arg.oddstyle] else rowstyle = args[cfg.arg.evenstyle] end local list_and_num = format(cfg.arg.list_and_num, listnum) local listText = args[list_and_num] local oddEven = cfg.marker.oddeven if listText:sub(1, 12) == '</div><table' then -- Assume list text is for a subgroup navbox so no automatic striping for this row. oddEven = listText:find(cfg.pattern.navbox_title) and cfg.marker.restart or cfg.class.navbox_odd_part end local liststyle_and_num = format(cfg.arg.liststyle_and_num, listnum) local listclass_and_num = format(cfg.arg.listclass_and_num, listnum) listCell :css('padding', '0') :cssText(args[cfg.arg.liststyle]) :cssText(rowstyle) :cssText(args[liststyle_and_num]) :addClass(cfg.class.navbox_list) :addClass(cfg.class.navbox_part .. oddEven) :addClass(args[cfg.arg.listclass]) :addClass(args[listclass_and_num]) :tag('div') :css('padding', (index == 1 and args[cfg.arg.list1padding]) or args[cfg.arg.listpadding] or '0 0.25em' ) :wikitext(processItem(listText, args[cfg.arg.nowrapitems])) if index == 1 and args[cfg.arg.image] then row :tag('td') :addClass(cfg.class.noviewer) :addClass(cfg.class.navbox_image) :addClass(args[cfg.arg.imageclass]) :css('width', '1px') -- Minimize width :css('padding', '0 0 0 2px') :cssText(args[cfg.arg.imagestyle]) :attr('rowspan', listnums_size) :tag('div') :wikitext(processItem(args[cfg.arg.image])) end end local function has_list_class(htmlclass) local patterns = { '^' .. htmlclass .. '$', '%s' .. htmlclass .. '$', '^' .. htmlclass .. '%s', '%s' .. htmlclass .. '%s' } for arg, _ in pairs(args) do if type(arg) == 'string' and mw.ustring.find(arg, cfg.pattern.class) then for _, pattern in ipairs(patterns) do if mw.ustring.find(args[arg] or '', pattern) then return true end end end end return false end -- there are a lot of list classes in the wild, so we add their TemplateStyles local function add_list_styles() local frame = mw.getCurrentFrame() local function add_list_templatestyles(htmlclass, templatestyles) if has_list_class(htmlclass) then return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles } } else return '' end end local hlist_styles = add_list_templatestyles('hlist', cfg.hlist_templatestyles) local plainlist_styles = add_list_templatestyles('plainlist', cfg.plainlist_templatestyles) -- a second workaround for [[phab:T303378]] -- when that issue is fixed, we can actually use has_navbar not to emit the -- tag here if we want if has_navbar() and hlist_styles == '' then hlist_styles = frame:extensionTag{ name = 'templatestyles', args = { src = cfg.hlist_templatestyles } } end -- hlist -> plainlist is best-effort to preserve old Common.css ordering. -- this ordering is not a guarantee because most navboxes will emit only -- one of these classes [hlist_note] return hlist_styles .. plainlist_styles end local function needsHorizontalLists(border) if border == cfg.keyword.border_subgroup or args[cfg.arg.tracking] == cfg.keyword.tracking_no then return false end return not has_list_class(cfg.pattern.hlist) and not has_list_class(cfg.pattern.plainlist) end local function hasBackgroundColors() for _, key in ipairs({cfg.arg.titlestyle, cfg.arg.groupstyle, cfg.arg.basestyle, cfg.arg.abovestyle, cfg.arg.belowstyle}) do if tostring(args[key]):find('background', 1, true) then return true end end return false end local function hasBorders() for _, key in ipairs({cfg.arg.groupstyle, cfg.arg.basestyle, cfg.arg.abovestyle, cfg.arg.belowstyle}) do if tostring(args[key]):find('border', 1, true) then return true end end return false end local function isIllegible() local styleratio = require('Module:Color contrast')._styleratio for key, style in pairs(args) do if tostring(key):match(cfg.pattern.style) then if styleratio{mw.text.unstripNoWiki(style)} < 4.5 then return true end end end return false end local function getTrackingCategories(border) local cats = {} if needsHorizontalLists(border) then table.insert(cats, cfg.category.horizontal_lists) end if hasBackgroundColors() then table.insert(cats, cfg.category.background_colors) end if isIllegible() then table.insert(cats, cfg.category.illegible) end if hasBorders() then table.insert(cats, cfg.category.borders) end return cats end local function renderTrackingCategories(builder, border) local title = mw.title.getCurrentTitle() if title.namespace ~= 10 then return end -- not in template space local subpage = title.subpageText if subpage == cfg.keyword.subpage_doc or subpage == cfg.keyword.subpage_sandbox or subpage == cfg.keyword.subpage_testcases then return end for _, cat in ipairs(getTrackingCategories(border)) do builder:wikitext('[[Category:' .. cat .. ']]') end end local function renderMainTable(border, listnums) local tbl = mw.html.create('table') :addClass(cfg.class.nowraplinks) :addClass(args[cfg.arg.bodyclass]) local state = args[cfg.arg.state] if args[cfg.arg.title] and state ~= cfg.keyword.state_plain and state ~= cfg.keyword.state_off then if state == cfg.keyword.state_collapsed then state = cfg.class.collapsed end tbl :addClass(cfg.class.collapsible) :addClass(state or cfg.class.autocollapse) end tbl:css('border-spacing', 0) if border == cfg.keyword.border_subgroup or border == cfg.keyword.border_none then tbl :addClass(cfg.class.navbox_subgroup) :cssText(args[cfg.arg.bodystyle]) :cssText(args[cfg.arg.style]) else -- regular navbox - bodystyle and style will be applied to the wrapper table tbl :addClass(cfg.class.navbox_inner) :css('background', 'transparent') :css('color', 'inherit') end tbl:cssText(args[cfg.arg.innerstyle]) renderTitleRow(tbl) renderAboveRow(tbl) local listnums_size = #listnums for i, listnum in ipairs(listnums) do renderListRow(tbl, i, listnum, listnums_size) end renderBelowRow(tbl) return tbl end local function add_navbox_styles(hiding_templatestyles) local frame = mw.getCurrentFrame() -- This is a lambda so that it doesn't need the frame as a parameter local function add_user_styles(templatestyles) if templatestyles and templatestyles ~= '' then return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles } } end return '' end -- get templatestyles. load base from config so that Lua only needs to do -- the work once of parser tag expansion local base_templatestyles = cfg.templatestyles local templatestyles = add_user_styles(args[cfg.arg.templatestyles]) local child_templatestyles = add_user_styles(args[cfg.arg.child_templatestyles]) -- The 'navbox-styles' div exists to wrap the styles to work around T200206 -- more elegantly. Instead of combinatorial rules, this ends up being linear -- number of CSS rules. return mw.html.create('div') :addClass(cfg.class.navbox_styles) :wikitext( add_list_styles() .. -- see [hlist_note] applied to 'before base_templatestyles' base_templatestyles .. templatestyles .. child_templatestyles .. table.concat(hiding_templatestyles) ) :done() end -- work around [[phab:T303378]] -- for each arg: find all the templatestyles strip markers, insert them into a -- table. then remove all templatestyles markers from the arg local function move_hiding_templatestyles(args) local gfind = string.gfind local gsub = string.gsub local templatestyles_markers = {} local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)' for k, arg in pairs(args) do for marker in gfind(arg, strip_marker_pattern) do table.insert(templatestyles_markers, marker) end args[k] = gsub(arg, strip_marker_pattern, '') end return templatestyles_markers end function p._navbox(navboxArgs) args = navboxArgs local hiding_templatestyles = move_hiding_templatestyles(args) local listnums = {} for k, _ in pairs(args) do if type(k) == 'string' then local listnum = k:match(cfg.pattern.listnum) if listnum then table.insert(listnums, tonumber(listnum)) end end end table.sort(listnums) local border = mw.text.trim(args[cfg.arg.border] or args[1] or '') if border == cfg.keyword.border_child then border = cfg.keyword.border_subgroup end -- render the main body of the navbox local tbl = renderMainTable(border, listnums) local res = mw.html.create() -- render the appropriate wrapper for the navbox, based on the border param if border == cfg.keyword.border_none then res:node(add_navbox_styles(hiding_templatestyles)) local nav = res:tag('div') :attr('role', 'navigation') :node(tbl) -- aria-labelledby title, otherwise above, otherwise lone group if args[cfg.arg.title] or args[cfg.arg.above] or (args[cfg.arg.group1] and not args[cfg.arg.group2]) then nav:attr( 'aria-labelledby', mw.uri.anchorEncode( args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1] ) ) else nav:attr('aria-label', cfg.aria_label) end elseif border == cfg.keyword.border_subgroup then -- We assume that this navbox is being rendered in a list cell of a -- parent navbox, and is therefore inside a div with padding:0em 0.25em. -- We start with a </div> to avoid the padding being applied, and at the -- end add a <div> to balance out the parent's </div> res :wikitext('</div>') :node(tbl) :wikitext('<div>') else res:node(add_navbox_styles(hiding_templatestyles)) local nav = res:tag('div') :attr('role', 'navigation') :addClass(cfg.class.navbox) :addClass(args[cfg.arg.navboxclass]) :cssText(args[cfg.arg.bodystyle]) :cssText(args[cfg.arg.style]) :css('padding', '3px') :node(tbl) -- aria-labelledby title, otherwise above, otherwise lone group if args[cfg.arg.title] or args[cfg.arg.above] or (args[cfg.arg.group1] and not args[cfg.arg.group2]) then nav:attr( 'aria-labelledby', mw.uri.anchorEncode(args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1]) ) else nav:attr('aria-label', cfg.aria_label) end end if (args[cfg.arg.nocat] or cfg.keyword.nocat_false):lower() == cfg.keyword.nocat_false then renderTrackingCategories(res, border) end return striped(tostring(res), border) end function p.navbox(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end args = getArgs(frame, {wrappers = {cfg.pattern.navbox}}) -- Read the arguments in the order they'll be output in, to make references -- number in the right order. local _ _ = args[cfg.arg.title] _ = args[cfg.arg.above] -- Limit this to 20 as covering 'most' cases (that's a SWAG) and because -- iterator approach won't work here for i = 1, 20 do _ = args[format(cfg.arg.group_and_num, i)] _ = args[format(cfg.arg.list_and_num, i)] end _ = args[cfg.arg.below] return p._navbox(args) end return p 5abf477a4f472e7b9f2543257d84327000684555 Module:Citation 828 319 628 627 2023-04-27T18:15:33Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain error('This module is retained for historical and structural reasons; consider using [[Module:Citation/CS1]].') b09b01dacd314f37060769a4fc6b8f027c247b86 Module:Unsubst 828 320 630 629 2023-04-27T18:15:34Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain local checkType = require('libraryUtil').checkType local p = {} local BODY_PARAM = '$B' local specialParams = { ['$params'] = 'parameter list', ['$aliases'] = 'parameter aliases', ['$flags'] = 'flags', ['$B'] = 'template content', ['$template-name'] = 'template invocation name override', } function p.main(frame, body) -- If we are substing, this function returns a template invocation, and if -- not, it returns the template body. The template body can be specified in -- the body parameter, or in the template parameter defined in the -- BODY_PARAM variable. This function can be called from Lua or from -- #invoke. -- Return the template body if we aren't substing. if not mw.isSubsting() then if body ~= nil then return body elseif frame.args[BODY_PARAM] ~= nil then return frame.args[BODY_PARAM] else error(string.format( "no template content specified (use parameter '%s' from #invoke)", BODY_PARAM ), 2) end end -- Sanity check for the frame object. if type(frame) ~= 'table' or type(frame.getParent) ~= 'function' or not frame:getParent() then error( "argument #1 to 'main' must be a frame object with a parent " .. "frame available", 2 ) end -- Find the invocation name. local mTemplateInvocation = require('Module:Template invocation') local name if frame.args['$template-name'] and '' ~= frame.args['$template-name'] then name = frame.args['$template-name'] -- override whatever the template name is with this name else name = mTemplateInvocation.name(frame:getParent():getTitle()) end -- Combine passed args with passed defaults local args = {} if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*override%s*,' ) then for k, v in pairs( frame:getParent().args ) do args[k] = v end for k, v in pairs( frame.args ) do if not specialParams[k] then if v == '__DATE__' then v = mw.getContentLanguage():formatDate( 'F Y' ) end args[k] = v end end else for k, v in pairs( frame.args ) do if not specialParams[k] then if v == '__DATE__' then v = mw.getContentLanguage():formatDate( 'F Y' ) end args[k] = v end end for k, v in pairs( frame:getParent().args ) do args[k] = v end end -- Trim parameters, if not specified otherwise if not string.find( ','..(frame.args['$flags'] or '')..',', ',%s*keep%-whitespace%s*,' ) then for k, v in pairs( args ) do args[k] = mw.ustring.match(v, '^%s*(.*)%s*$') or '' end end -- Pull information from parameter aliases local aliases = {} if frame.args['$aliases'] then local list = mw.text.split( frame.args['$aliases'], '%s*,%s*' ) for k, v in ipairs( list ) do local tmp = mw.text.split( v, '%s*>%s*' ) aliases[tonumber(mw.ustring.match(tmp[1], '^[1-9][0-9]*$')) or tmp[1]] = ((tonumber(mw.ustring.match(tmp[2], '^[1-9][0-9]*$'))) or tmp[2]) end end for k, v in pairs( aliases ) do if args[k] and ( not args[v] or args[v] == '' ) then args[v] = args[k] end args[k] = nil end -- Remove empty parameters, if specified if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*remove%-empty%s*,' ) then local tmp = 0 for k, v in ipairs( args ) do if v ~= '' or ( args[k+1] and args[k+1] ~= '' ) or ( args[k+2] and args[k+2] ~= '' ) then tmp = k else break end end for k, v in pairs( args ) do if v == '' then if not (type(k) == 'number' and k < tmp) then args[k] = nil end end end end -- Order parameters if frame.args['$params'] then local params, tmp = mw.text.split( frame.args['$params'], '%s*,%s*' ), {} for k, v in ipairs(params) do v = tonumber(mw.ustring.match(v, '^[1-9][0-9]*$')) or v if args[v] then tmp[v], args[v] = args[v], nil end end for k, v in pairs(args) do tmp[k], args[k] = args[k], nil end args = tmp end return mTemplateInvocation.invocation(name, args) end p[''] = p.main -- For backwards compatibility return p 7f01ffc8aa2ac4a4772f14c12e0b77e384ecabb6 Module:InfoboxImage 828 322 638 637 2023-04-27T18:15:38Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain -- Inputs: -- image - Can either be a bare filename (with or without the File:/Image: prefix) or a fully formatted image link -- page - page to display for multipage images (DjVu) -- size - size to display the image -- maxsize - maximum size for image -- sizedefault - default size to display the image if size param is blank -- alt - alt text for image -- title - title text for image -- border - set to yes if border -- center - set to yes, if the image has to be centered -- upright - upright image param -- suppressplaceholder - if yes then checks to see if image is a placeholder and suppresses it -- link - page to visit when clicking on image -- class - HTML classes to add to the image -- Outputs: -- Formatted image. -- More details available at the "Module:InfoboxImage/doc" page local i = {}; local placeholder_image = { "Blue - Replace this image female.svg", "Blue - Replace this image male.svg", "Female no free image yet.png", "Flag of None (square).svg", "Flag of None.svg", "Flag of.svg", "Green - Replace this image female.svg", "Green - Replace this image male.svg", "Image is needed female.svg", "Image is needed male.svg", "Location map of None.svg", "Male no free image yet.png", "Missing flag.png", "No flag.svg", "No free portrait.svg", "No portrait (female).svg", "No portrait (male).svg", "Red - Replace this image female.svg", "Red - Replace this image male.svg", "Replace this image female (blue).svg", "Replace this image female.svg", "Replace this image male (blue).svg", "Replace this image male.svg", "Silver - Replace this image female.svg", "Silver - Replace this image male.svg", "Replace this image.svg", "Cricket no pic.png", "CarersLogo.gif", "Diagram Needed.svg", "Example.jpg", "Image placeholder.png", "No male portrait.svg", "Nocover-upload.png", "NoDVDcover copy.png", "Noribbon.svg", "No portrait-BFD-test.svg", "Placeholder barnstar ribbon.png", "Project Trains no image.png", "Image-request.png", "Sin bandera.svg", "Sin escudo.svg", "Replace this image - temple.png", "Replace this image butterfly.png", "Replace this image.svg", "Replace this image1.svg", "Resolution angle.png", "Image-No portrait-text-BFD-test.svg", "Insert image here.svg", "No image available.png", "NO IMAGE YET square.png", "NO IMAGE YET.png", "No Photo Available.svg", "No Screenshot.svg", "No-image-available.jpg", "Null.png", "PictureNeeded.gif", "Place holder.jpg", "Unbenannt.JPG", "UploadACopyrightFreeImage.svg", "UploadAnImage.gif", "UploadAnImage.svg", "UploadAnImageShort.svg", "CarersLogo.gif", "Diagram Needed.svg", "No male portrait.svg", "NoDVDcover copy.png", "Placeholder barnstar ribbon.png", "Project Trains no image.png", "Image-request.png", "Noimage.gif", } function i.IsPlaceholder(image) -- change underscores to spaces image = mw.ustring.gsub(image, "_", " "); assert(image ~= nil, 'mw.ustring.gsub(image, "_", " ") must not return nil') -- if image starts with [[ then remove that and anything after | if mw.ustring.sub(image,1,2) == "[[" then image = mw.ustring.sub(image,3); image = mw.ustring.gsub(image, "([^|]*)|.*", "%1"); assert(image ~= nil, 'mw.ustring.gsub(image, "([^|]*)|.*", "%1") must not return nil') end -- Trim spaces image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1'); assert(image ~= nil, "mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1') must not return nil") -- remove prefix if exists local allNames = mw.site.namespaces[6].aliases allNames[#allNames + 1] = mw.site.namespaces[6].name allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName for i, name in ipairs(allNames) do if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then image = mw.ustring.sub(image, mw.ustring.len(name) + 2); break end end -- Trim spaces image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1'); -- capitalise first letter image = mw.ustring.upper(mw.ustring.sub(image,1,1)) .. mw.ustring.sub(image,2); for i,j in pairs(placeholder_image) do if image == j then return true end end return false end function i.InfoboxImage(frame) local image = frame.args["image"]; if image == "" or image == nil then return ""; end if image == "&nbsp;" then return image; end if frame.args["suppressplaceholder"] ~= "no" then if i.IsPlaceholder(image) == true then return ""; end end if mw.ustring.lower(mw.ustring.sub(image,1,5)) == "http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "[http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[[http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "https:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[https:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,8)) == "[[https:" then return ""; end if mw.ustring.sub(image,1,2) == "[[" then -- search for thumbnail images and add to tracking cat if found local cat = ""; if mw.title.getCurrentTitle().namespace == 0 and (mw.ustring.find(image, "|%s*thumb%s*[|%]]") or mw.ustring.find(image, "|%s*thumbnail%s*[|%]]")) then cat = "[[Category:Pages using infoboxes with thumbnail images]]"; end return image .. cat; elseif mw.ustring.sub(image,1,2) == "{{" and mw.ustring.sub(image,1,3) ~= "{{{" then return image; elseif mw.ustring.sub(image,1,1) == "<" then return image; elseif mw.ustring.sub(image,1,5) == mw.ustring.char(127).."UNIQ" then -- Found strip marker at begining, so pass don't process at all return image; elseif mw.ustring.sub(image,4,9) == "`UNIQ-" then -- Found strip marker at begining, so pass don't process at all return image; else local result = ""; local page = frame.args["page"]; local size = frame.args["size"]; local maxsize = frame.args["maxsize"]; local sizedefault = frame.args["sizedefault"]; local alt = frame.args["alt"]; local link = frame.args["link"]; local title = frame.args["title"]; local border = frame.args["border"]; local upright = frame.args["upright"] or ""; local thumbtime = frame.args["thumbtime"] or ""; local center = frame.args["center"]; local class = frame.args["class"]; -- remove prefix if exists local allNames = mw.site.namespaces[6].aliases allNames[#allNames + 1] = mw.site.namespaces[6].name allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName for i, name in ipairs(allNames) do if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then image = mw.ustring.sub(image, mw.ustring.len(name) + 2); break end end if maxsize ~= "" and maxsize ~= nil then -- if no sizedefault then set to maxsize if sizedefault == "" or sizedefault == nil then sizedefault = maxsize end -- check to see if size bigger than maxsize if size ~= "" and size ~= nil then local sizenumber = tonumber(mw.ustring.match(size,"%d*")) or 0; local maxsizenumber = tonumber(mw.ustring.match(maxsize,"%d*")) or 0; if sizenumber>maxsizenumber and maxsizenumber>0 then size = maxsize; end end end -- add px to size if just a number if (tonumber(size) or 0) > 0 then size = size .. "px"; end -- add px to sizedefault if just a number if (tonumber(sizedefault) or 0) > 0 then sizedefault = sizedefault .. "px"; end result = "[[File:" .. image; if page ~= "" and page ~= nil then result = result .. "|page=" .. page; end if size ~= "" and size ~= nil then result = result .. "|" .. size; elseif sizedefault ~= "" and sizedefault ~= nil then result = result .. "|" .. sizedefault; else result = result .. "|frameless"; end if center == "yes" then result = result .. "|center" end if alt ~= "" and alt ~= nil then result = result .. "|alt=" .. alt; end if link ~= "" and link ~= nil then result = result .. "|link=" .. link; end if border == "yes" then result = result .. "|border"; end if upright == "yes" then result = result .. "|upright"; elseif upright ~= "" then result = result .. "|upright=" .. upright; end if thumbtime ~= "" then result = result .. "|thumbtime=" .. thumbtime; end if class ~= nil and class ~= "" then result = result .. "|class=" .. class; end -- if alt value is a keyword then do not use as a description if alt == "thumbnail" or alt == "thumb" or alt == "frameless" or alt == "left" or alt == "center" or alt == "right" or alt == "upright" or alt == "border" or mw.ustring.match(alt or "", '^[0-9]*px$', 1) ~= nil then alt = nil; end if title ~= "" and title ~= nil then -- does title param contain any templatestyles? If yes then set to blank. if mw.ustring.match(frame:preprocess(title), 'UNIQ%-%-templatestyles', 1) ~= nil then title = nil; end end if title ~= "" and title ~= nil then result = result .. "|" .. title; end result = result .. "]]"; return result; end end return i; 0ee5fe75ba239fc5c9cedc81ca11bdc0be068542 Module:If empty 828 323 640 639 2023-04-27T18:15:38Z BEELETH 2 1 revision imported: Import from Wikipedia Scribunto text/plain local p = {} function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) for k,v in ipairs(args) do if v ~= '' then return v end end end return p 4790391408957dea3ff9f453834c05f6b379a45c Module:Documentation/config 828 213 642 546 2023-04-27T18:19:09Z BEELETH 2 will it work? lets find out.......... Scribunto text/plain ---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------------------------- local _format = require('Module:TNT').format local function format(id) return _format('I18n/Documentation', id) end local cfg = {} -- Do not edit this line. cfg['templatestyles-scr'] = 'Module:Documentation/styles.css' ---------------------------------------------------------------------------------------------------- -- Protection template configuration ---------------------------------------------------------------------------------------------------- -- cfg['protection-template'] -- The name of the template that displays the protection icon (a padlock on enwiki). cfg['protection-template'] = 'PP-template' -- cfg['protection-reason-edit'] -- The protection reason for edit-protected templates to pass to -- [[Module:Protection banner]]. cfg['protection-reason-edit'] = 'template' --[[ -- cfg['protection-template-args'] -- Any arguments to send to the protection template. This should be a Lua table. -- For example, if the protection template is "pp-template", and the wikitext template invocation -- looks like "{{pp-template|docusage=yes}}", then this table should look like "{docusage = 'yes'}". --]] cfg['protection-template-args'] = {docusage = 'yes'} --[[ ---------------------------------------------------------------------------------------------------- -- Sandbox notice configuration -- -- On sandbox pages the module can display a template notifying users that the current page is a -- sandbox, and the location of test cases pages, etc. The module decides whether the page is a -- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the -- messages that the notices contains. ---------------------------------------------------------------------------------------------------- --]] -- cfg['sandbox-notice-image'] -- The image displayed in the sandbox notice. cfg['sandbox-notice-image'] = '[[Image:Edit In Sandbox Icon - Color.svg|40px|alt=|link=]]' --[[ -- cfg['sandbox-notice-pagetype-template'] -- cfg['sandbox-notice-pagetype-module'] -- cfg['sandbox-notice-pagetype-other'] -- The page type of the sandbox page. The message that is displayed depends on the current subject -- namespace. This message is used in either cfg['sandbox-notice-blurb'] or -- cfg['sandbox-notice-diff-blurb']. --]] cfg['sandbox-notice-pagetype-template'] = format('sandbox-notice-pagetype-template') cfg['sandbox-notice-pagetype-module'] = format('sandbox-notice-pagetype-module') cfg['sandbox-notice-pagetype-other'] = format('sandbox-notice-pagetype-other') --[[ -- cfg['sandbox-notice-blurb'] -- cfg['sandbox-notice-diff-blurb'] -- cfg['sandbox-notice-diff-display'] -- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence -- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page -- type, which is either cfg['sandbox-notice-pagetype-template'], -- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what -- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between -- the sandbox and the main template. The display value of the diff link is set by -- cfg['sandbox-notice-compare-link-display']. --]] cfg['sandbox-notice-blurb'] = format('sandbox-notice-blurb') cfg['sandbox-notice-diff-blurb'] = format('sandbox-notice-diff-blurb') cfg['sandbox-notice-compare-link-display'] = format('sandbox-notice-compare-link-display') --[[ -- cfg['sandbox-notice-testcases-blurb'] -- cfg['sandbox-notice-testcases-link-display'] -- cfg['sandbox-notice-testcases-run-blurb'] -- cfg['sandbox-notice-testcases-run-link-display'] -- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit. $1 is a link to the test cases page. -- cfg['sandbox-notice-testcases-link-display'] is the display value for that link. -- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test -- cases page, and $2 is a link to the page to run it. -- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test -- cases. --]] cfg['sandbox-notice-testcases-blurb'] = format('sandbox-notice-testcases-blurb') cfg['sandbox-notice-testcases-link-display'] = format('sandbox-notice-testcases-link-display') cfg['sandbox-notice-testcases-run-blurb'] = format('sandbox-notice-testcases-run-blurb') cfg['sandbox-notice-testcases-run-link-display'] = format('sandbox-notice-testcases-run-link-display') -- cfg['sandbox-category'] -- A category to add to all template sandboxes. cfg['sandbox-category'] = 'Template sandboxes' ---------------------------------------------------------------------------------------------------- -- Start box configuration ---------------------------------------------------------------------------------------------------- -- cfg['documentation-icon-wikitext'] -- The wikitext for the icon shown at the top of the template. cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=Documentation icon]]' ---------------------------------------------------------------------------------------------------- -- Link box (end box) configuration ---------------------------------------------------------------------------------------------------- -- cfg['transcluded-from-blurb'] -- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page. cfg['transcluded-from-blurb'] = format('transcluded-from-blurb') --[[ -- cfg['create-module-doc-blurb'] -- Notice displayed in the module namespace when the documentation subpage does not exist. -- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the -- display cfg['create-link-display']. --]] cfg['create-module-doc-blurb'] = format('create-module-doc-blurb') ---------------------------------------------------------------------------------------------------- -- Experiment blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['experiment-blurb-template'] -- cfg['experiment-blurb-module'] -- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages. -- It is only shown in the template and module namespaces. With the default English settings, it -- might look like this: -- -- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages. -- -- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links. -- -- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending -- on what namespace we are in. -- -- Parameters: -- -- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display']) -- -- If the sandbox doesn't exist, it is in the format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display']) -- -- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload'] -- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display'] -- loads a default edit summary of cfg['mirror-edit-summary']. -- -- $2 is a link to the test cases page. If the test cases page exists, it is in the following format: -- -- cfg['testcases-link-display'] (cfg['testcases-edit-link-display']) -- -- If the test cases page doesn't exist, it is in the format: -- -- cfg['testcases-link-display'] (cfg['testcases-create-link-display']) -- -- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the -- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current -- namespace. --]] cfg['experiment-blurb-template'] = format('experiment-blurb-template') cfg['experiment-blurb-module'] = format('experiment-blurb-module') ---------------------------------------------------------------------------------------------------- -- Sandbox link configuration ---------------------------------------------------------------------------------------------------- -- cfg['sandbox-subpage'] -- The name of the template subpage typically used for sandboxes. cfg['sandbox-subpage'] = 'sandbox' -- cfg['template-sandbox-preload'] -- Preload file for template sandbox pages. cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox' -- cfg['module-sandbox-preload'] -- Preload file for Lua module sandbox pages. cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox' -- cfg['sandbox-link-display'] -- The text to display for "sandbox" links. cfg['sandbox-link-display'] = format('sandbox-link-display') -- cfg['sandbox-edit-link-display'] -- The text to display for sandbox "edit" links. cfg['sandbox-edit-link-display'] = format('sandbox-edit-link-display') -- cfg['sandbox-create-link-display'] -- The text to display for sandbox "create" links. cfg['sandbox-create-link-display'] = format('sandbox-create-link-display') -- cfg['compare-link-display'] -- The text to display for "compare" links. cfg['compare-link-display'] = format('compare-link-display') -- cfg['mirror-edit-summary'] -- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the -- template page. cfg['mirror-edit-summary'] = 'Create sandbox version of $1' -- cfg['mirror-link-display'] -- The text to display for "mirror" links. cfg['mirror-link-display'] = format('mirror-link-display') -- cfg['mirror-link-preload'] -- The page to preload when a user clicks the "mirror" link. cfg['mirror-link-preload'] = 'Template:Documentation/mirror' ---------------------------------------------------------------------------------------------------- -- Test cases link configuration ---------------------------------------------------------------------------------------------------- -- cfg['testcases-subpage'] -- The name of the template subpage typically used for test cases. cfg['testcases-subpage'] = 'testcases' -- cfg['template-testcases-preload'] -- Preload file for template test cases pages. cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases' -- cfg['module-testcases-preload'] -- Preload file for Lua module test cases pages. cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases' -- cfg['testcases-link-display'] -- The text to display for "testcases" links. cfg['testcases-link-display'] = format('testcases-link-display') -- cfg['testcases-edit-link-display'] -- The text to display for test cases "edit" links. cfg['testcases-edit-link-display'] = format('testcases-edit-link-display') -- cfg['testcases-create-link-display'] -- The text to display for test cases "create" links. cfg['testcases-create-link-display'] = format('testcases-create-link-display') ---------------------------------------------------------------------------------------------------- -- Add categories blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['add-categories-blurb'] -- Text to direct users to add categories to the /doc subpage. Not used if the "content" or -- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a -- link to the /doc subpage with a display value of cfg['doc-link-display']. --]] cfg['add-categories-blurb'] = format('add-categories-blurb') -- cfg['doc-link-display'] -- The text to display when linking to the /doc subpage. cfg['doc-link-display'] = '/doc' ---------------------------------------------------------------------------------------------------- -- Subpages link configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['subpages-blurb'] -- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a -- display value of cfg['subpages-link-display']. In the English version this blurb is simply -- the link followed by a period, and the link display provides the actual text. --]] cfg['subpages-blurb'] = format('subpages-blurb') --[[ -- cfg['subpages-link-display'] -- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'], -- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in -- the template namespace, the module namespace, or another namespace. --]] cfg['subpages-link-display'] = format('subpages-link-display') -- cfg['template-pagetype'] -- The pagetype to display for template pages. cfg['template-pagetype'] = format('template-pagetype') -- cfg['module-pagetype'] -- The pagetype to display for Lua module pages. cfg['module-pagetype'] = format('module-pagetype') -- cfg['default-pagetype'] -- The pagetype to display for pages other than templates or Lua modules. cfg['default-pagetype'] = format('default-pagetype') ---------------------------------------------------------------------------------------------------- -- Doc link configuration ---------------------------------------------------------------------------------------------------- -- cfg['doc-subpage'] -- The name of the subpage typically used for documentation pages. cfg['doc-subpage'] = 'doc' -- cfg['file-docpage-preload'] -- Preload file for documentation page in the file namespace. cfg['file-docpage-preload'] = 'Template:Documentation/preload-filespace' -- cfg['docpage-preload'] -- Preload file for template documentation pages in all namespaces. cfg['docpage-preload'] = 'Template:Documentation/preload' -- cfg['module-preload'] -- Preload file for Lua module documentation pages. cfg['module-preload'] = 'Template:Documentation/preload-module-doc' ---------------------------------------------------------------------------------------------------- -- Print version configuration ---------------------------------------------------------------------------------------------------- -- cfg['print-subpage'] -- The name of the template subpage used for print versions. cfg['print-subpage'] = 'Print' -- cfg['print-link-display'] -- The text to display when linking to the /Print subpage. cfg['print-link-display'] = '/Print' -- cfg['print-blurb'] -- Text to display if a /Print subpage exists. $1 is a link to the subpage with a display value of cfg['print-link-display']. cfg['print-blurb'] = format('print-blurb') -- cfg['display-print-category'] -- Set to true to enable output of cfg['print-category'] if a /Print subpage exists. -- This should be a boolean value (either true or false). cfg['display-print-category'] = true -- cfg['print-category'] -- Category to output if cfg['display-print-category'] is set to true, and a /Print subpage exists. cfg['print-category'] = 'Templates with print versions' ---------------------------------------------------------------------------------------------------- -- HTML and CSS configuration ---------------------------------------------------------------------------------------------------- -- cfg['main-div-id'] -- The "id" attribute of the main HTML "div" tag. cfg['main-div-id'] = 'template-documentation' -- cfg['main-div-classes'] -- The CSS classes added to the main HTML "div" tag. cfg['main-div-class'] = 'ts-doc-doc' cfg['header-div-class'] = 'ts-doc-header' cfg['heading-div-class'] = 'ts-doc-heading' cfg['content-div-class'] = 'ts-doc-content' cfg['footer-div-class'] = 'ts-doc-footer plainlinks' cfg['sandbox-class'] = 'ts-doc-sandbox' -- cfg['start-box-linkclasses'] -- The CSS classes used for the [view][edit][history] or [create] links in the start box. cfg['start-box-linkclasses'] = 'ts-tlinks-tlinks mw-editsection-like plainlinks' -- cfg['start-box-link-id'] -- The HTML "id" attribute for the links in the start box. cfg['start-box-link-id'] = 'doc_editlinks' ---------------------------------------------------------------------------------------------------- -- Tracking category configuration ---------------------------------------------------------------------------------------------------- -- cfg['display-strange-usage-category'] -- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage -- or a /testcases subpage. This should be a boolean value (either true or false). cfg['display-strange-usage-category'] = true -- cfg['strange-usage-category'] -- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a -- /doc subpage or a /testcases subpage. cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage' --[[ ---------------------------------------------------------------------------------------------------- -- End configuration -- -- Don't edit anything below this line. ---------------------------------------------------------------------------------------------------- --]] return cfg 79bc957b39b5b752fa4c2e2e80a35faa01901425 Module:Documentation 828 212 643 424 2023-04-27T18:22:32Z BEELETH 2 Scribunto text/plain -- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs local messageBox = require('Module:Message box') -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local i18n = mw.loadData('Module:Documentation/i18n') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purposes. ---------------------------------------------------------------------------- local function message(cfgKey, valArray, expectType) --[[ -- Gets a message from the cfg table and formats it if appropriate. -- The function raises an error if the value from the cfg table is not -- of the type expectType. The default type for expectType is 'string'. -- If the table valArray is present, strings such as $1, $2 etc. in the -- message are substituted with values from the table keys [1], [2] etc. -- For example, if the message "foo-message" had the value 'Foo $2 bar $1.', -- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz." --]] local msg = cfg[cfgKey] expectType = expectType or 'string' if type(msg) ~= expectType then error(require('Module:TNT').format('I18n/Documentation', 'cfg-error-msg-type', cfgKey, expectType, type(msg)), 2) end if not valArray then return msg end local function getMessageVal(match) match = tonumber(match) return valArray[match] or error(require('Module:TNT').format('I18n/Documentation', 'cfg-error-msg-empty', '$' .. match, cfgKey), 4) end local ret = ugsub(msg, '$([1-9][0-9]*)', getMessageVal) return ret end p.message = message local function makeWikilink(page, display) if display then return mw.ustring.format('[[%s|%s]]', page, display) else return mw.ustring.format('[[%s]]', page) end end p.makeWikilink = makeWikilink local function makeCategoryLink(cat, sort) local catns = mw.site.namespaces[14].name return makeWikilink(catns .. ':' .. cat, sort) end p.makeCategoryLink = makeCategoryLink local function makeUrlLink(url, display) return mw.ustring.format('[%s %s]', url, display) end p.makeUrlLink = makeUrlLink local function makeToolbar(...) local ret = {} local lim = select('#', ...) if lim < 1 then return nil end for i = 1, lim do ret[#ret + 1] = select(i, ...) end return '<small>(' .. table.concat(ret, ' &#124; ') .. ')</small>' end p.makeToolbar = makeToolbar ---------------------------------------------------------------------------- -- Argument processing ---------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local args = getArgs(frame, { valueFunc = function (key, value) if type(value) == 'string' then value = value:match('^%s*(.-)%s*$') -- Remove whitespace. if key == 'heading' or value ~= '' then return value else return nil end else return value end end }) return p[funcName](args) end end ---------------------------------------------------------------------------- -- Load TemplateStyles ---------------------------------------------------------------------------- p.main = function(frame) local parent = frame.getParent(frame) local output = p._main(parent.args) return frame:extensionTag{ name='templatestyles', args = { src= message('templatestyles-scr') } } .. output end ---------------------------------------------------------------------------- -- Main function ---------------------------------------------------------------------------- function p._main(args) --[[ -- This function defines logic flow for the module. -- @args - table of arguments passed by the user -- -- Messages: -- 'main-div-id' --> 'template-documentation' -- 'main-div-classes' --> 'template-documentation iezoomfix' --]] local env = p.getEnvironment(args) local root = mw.html.create() root :wikitext(p.protectionTemplate(env)) :wikitext(p.sandboxNotice(args, env)) -- This div tag is from {{documentation/start box}}, but moving it here -- so that we don't have to worry about unclosed tags. :tag('div') :attr('id', message('main-div-id')) :addClass(message('main-div-class')) :wikitext(p._startBox(args, env)) :wikitext(p._content(args, env)) :done() :wikitext(p._endBox(args, env)) :wikitext(p.addTrackingCategories(env)) return tostring(root) end ---------------------------------------------------------------------------- -- Environment settings ---------------------------------------------------------------------------- function p.getEnvironment(args) --[[ -- Returns a table with information about the environment, including title objects and other namespace- or -- path-related data. -- @args - table of arguments passed by the user -- -- Title objects include: -- env.title - the page we are making documentation for (usually the current title) -- env.templateTitle - the template (or module, file, etc.) -- env.docTitle - the /doc subpage. -- env.sandboxTitle - the /sandbox subpage. -- env.testcasesTitle - the /testcases subpage. -- env.printTitle - the print version of the template, located at the /Print subpage. -- -- Data includes: -- env.protectionLevels - the protection levels table of the title object. -- env.subjectSpace - the number of the title's subject namespace. -- env.docSpace - the number of the namespace the title puts its documentation in. -- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace. -- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template. -- -- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value -- returned will be nil. --]] local env, envFuncs = {}, {} -- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value -- returned by that function is memoized in the env table so that we don't call any of the functions -- more than once. (Nils won't be memoized.) setmetatable(env, { __index = function (t, key) local envFunc = envFuncs[key] if envFunc then local success, val = pcall(envFunc) if success then env[key] = val -- Memoise the value. return val end end return nil end }) function envFuncs.title() -- The title object for the current page, or a test page passed with args.page. local title local titleArg = args.page if titleArg then title = mw.title.new(titleArg) else title = mw.title.getCurrentTitle() end return title end function envFuncs.templateTitle() --[[ -- The template (or module, etc.) title object. -- Messages: -- 'sandbox-subpage' --> 'sandbox' -- 'testcases-subpage' --> 'testcases' --]] local subjectSpace = env.subjectSpace local title = env.title local subpage = title.subpageText if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then return mw.title.makeTitle(subjectSpace, title.baseText) else return mw.title.makeTitle(subjectSpace, title.text) end end function envFuncs.docTitle() --[[ -- Title object of the /doc subpage. -- Messages: -- 'doc-subpage' --> 'doc' --]] local title = env.title local docname = args[1] -- User-specified doc page. local docpage if docname then docpage = docname else docpage = env.docpageBase .. '/' .. message('doc-subpage') end return mw.title.new(docpage) end function envFuncs.sandboxTitle() --[[ -- Title object for the /sandbox subpage. -- Messages: -- 'sandbox-subpage' --> 'sandbox' --]] return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage')) end function envFuncs.testcasesTitle() --[[ -- Title object for the /testcases subpage. -- Messages: -- 'testcases-subpage' --> 'testcases' --]] return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage')) end function envFuncs.printTitle() --[[ -- Title object for the /Print subpage. -- Messages: -- 'print-subpage' --> 'Print' --]] return env.templateTitle:subPageTitle(message('print-subpage')) end function envFuncs.protectionLevels() -- The protection levels table of the title object. return env.title.protectionLevels end function envFuncs.subjectSpace() -- The subject namespace number. return mw.site.namespaces[env.title.namespace].subject.id end function envFuncs.docSpace() -- The documentation namespace number. For most namespaces this is the same as the -- subject namespace. However, pages in the Article, File, MediaWiki or Category -- namespaces must have their /doc, /sandbox and /testcases pages in talk space. local subjectSpace = env.subjectSpace if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then return subjectSpace + 1 else return subjectSpace end end function envFuncs.docpageBase() -- The base page of the /doc, /sandbox, and /testcases subpages. -- For some namespaces this is the talk page, rather than the template page. local templateTitle = env.templateTitle local docSpace = env.docSpace local docSpaceText = mw.site.namespaces[docSpace].name -- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon. return docSpaceText .. ':' .. templateTitle.text end function envFuncs.compareUrl() -- Diff link between the sandbox and the main template using [[Special:ComparePages]]. local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle if templateTitle.exists and sandboxTitle.exists then local compareUrl = mw.uri.fullUrl( 'Special:ComparePages', {page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} ) return tostring(compareUrl) else return nil end end return env end ---------------------------------------------------------------------------- -- Auxiliary templates ---------------------------------------------------------------------------- function p.sandboxNotice(args, env) --[=[ -- Generates a sandbox notice for display above sandbox pages. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-notice-image' --> '[[Image:Sandbox.svg|50px|alt=|link=]]' -- 'sandbox-notice-blurb' --> 'This is the $1 for $2.' -- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).' -- 'sandbox-notice-pagetype-template' --> '[[w:Wikipedia:Template test cases|template sandbox]] page' -- 'sandbox-notice-pagetype-module' --> '[[w:Wikipedia:Template test cases|module sandbox]] page' -- 'sandbox-notice-pagetype-other' --> 'sandbox page' -- 'sandbox-notice-compare-link-display' --> 'diff' -- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.' -- 'sandbox-notice-testcases-link-display' --> 'test cases' -- 'sandbox-category' --> 'Template sandboxes' --]=] local title = env.title local sandboxTitle = env.sandboxTitle local templateTitle = env.templateTitle local subjectSpace = env.subjectSpace if not (subjectSpace and title and sandboxTitle and templateTitle and mw.title.equals(title, sandboxTitle)) then return nil end -- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text". local omargs = {} omargs.image = message('sandbox-notice-image') -- Get the text. We start with the opening blurb, which is something like -- "This is the template sandbox for [[Template:Foo]] (diff)." local text = '' local frame = mw.getCurrentFrame() local isPreviewing = frame:preprocess('{{REVISIONID}}') == '' -- True if the page is being previewed. local pagetype if subjectSpace == 10 then pagetype = message('sandbox-notice-pagetype-template') elseif subjectSpace == 828 then pagetype = message('sandbox-notice-pagetype-module') else pagetype = message('sandbox-notice-pagetype-other') end local templateLink = makeWikilink(templateTitle.prefixedText) local compareUrl = env.compareUrl if isPreviewing or not compareUrl then text = text .. message('sandbox-notice-blurb', {pagetype, templateLink}) else local compareDisplay = message('sandbox-notice-compare-link-display') local compareLink = makeUrlLink(compareUrl, compareDisplay) text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink}) end -- Get the test cases page blurb if the page exists. This is something like -- "See also the companion subpage for [[Template:Foo/testcases|test cases]]." local testcasesTitle = env.testcasesTitle if testcasesTitle and testcasesTitle.exists then if testcasesTitle.contentModel == "Scribunto" then local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink}) else local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink}) end end -- Add the sandbox to the sandbox category. text = text .. makeCategoryLink(message('sandbox-category')) omargs.text = text omargs.class = message('sandbox-class') return messageBox.main('ombox', omargs) end function p.protectionTemplate(env) -- Generates the padlock icon in the top right. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'protection-template' --> 'pp-template' -- 'protection-template-args' --> {docusage = 'yes'} local title = env.title local protectionLevels local protectionTemplate = message('protection-template') local namespace = title.namespace if not (protectionTemplate and (namespace == 10 or namespace == 828)) then -- Don't display the protection template if we are not in the template or module namespaces. return nil end protectionLevels = env.protectionLevels if not protectionLevels then return nil end local editLevels = protectionLevels.edit local moveLevels = protectionLevels.move if moveLevels and moveLevels[1] == 'sysop' or editLevels and editLevels[1] then -- The page is full-move protected, or full, template, or semi-protected. local frame = mw.getCurrentFrame() return frame:expandTemplate{title = protectionTemplate, args = message('protection-template-args', nil, 'table')} else return nil end end ---------------------------------------------------------------------------- -- Start box ---------------------------------------------------------------------------- p.startBox = makeInvokeFunc('_startBox') function p._startBox(args, env) --[[ -- This function generates the start box. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make -- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox -- which generate the box HTML. --]] env = env or p.getEnvironment(args) local links local content = args.content if not content then -- No need to include the links if the documentation is on the template page itself. local linksData = p.makeStartBoxLinksData(args, env) if linksData then links = p.renderStartBoxLinks(linksData) end end -- Generate the start box html. local data = p.makeStartBoxData(args, env, links) if data then return p.renderStartBox(data) else -- User specified no heading. return nil end end function p.makeStartBoxLinksData(args, env) --[[ -- Does initial processing of data to make the [view] [edit] [history] [purge] links. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'view-link-display' --> 'view' -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'purge-link-display' --> 'purge' -- 'file-docpage-preload' --> 'Template:Documentation/preload-filespace' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'docpage-preload' --> 'Template:Documentation/preload' -- 'create-link-display' --> 'create' --]] local subjectSpace = env.subjectSpace local title = env.title local docTitle = env.docTitle if not title or not docTitle then return nil end if docTitle.isRedirect then docTitle = docTitle.redirectTarget end local data = {} data.title = title data.docTitle = docTitle -- View, display, edit, and purge links if /doc exists. data.viewLinkDisplay = i18n['view-link-display'] data.editLinkDisplay = i18n['edit-link-display'] data.historyLinkDisplay = i18n['history-link-display'] data.purgeLinkDisplay = i18n['purge-link-display'] -- Create link if /doc doesn't exist. local preload = args.preload if not preload then if subjectSpace == 6 then -- File namespace preload = message('file-docpage-preload') elseif subjectSpace == 828 then -- Module namespace preload = message('module-preload') else preload = message('docpage-preload') end end data.preload = preload data.createLinkDisplay = i18n['create-link-display'] return data end function p.renderStartBoxLinks(data) --[[ -- Generates the [view][edit][history][purge] or [create] links from the data table. -- @data - a table of data generated by p.makeStartBoxLinksData --]] local function escapeBrackets(s) -- Escapes square brackets with HTML entities. return s :gsub('%[', '&#91;') -- Replace square brackets with HTML entities. :gsub('%]', '&#93;') end local ret local docTitle = data.docTitle local title = data.title if docTitle.exists then local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay) local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay) local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay) local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay) ret = '[%s] [%s] [%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink) else local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay) ret = '[%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, createLink) end return ret end function p.makeStartBoxData(args, env, links) --[=[ -- Does initial processing of data to pass to the start-box render function, p.renderStartBox. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error. -- -- Messages: -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=Documentation icon]]' -- 'template-namespace-heading' --> 'Template documentation' -- 'module-namespace-heading' --> 'Module documentation' -- 'file-namespace-heading' --> 'Summary' -- 'other-namespaces-heading' --> 'Documentation' -- 'start-box-linkclasses' --> 'mw-editsection-like plainlinks' -- 'start-box-link-id' --> 'doc_editlinks' -- 'testcases-create-link-display' --> 'create' --]=] local subjectSpace = env.subjectSpace if not subjectSpace then -- Default to an "other namespaces" namespace, so that we get at least some output -- if an error occurs. subjectSpace = 2 end local data = {} -- Heading local heading = args.heading -- Blank values are not removed. if heading == '' then -- Don't display the start box if the heading arg is defined but blank. return nil end if heading then data.heading = heading elseif subjectSpace == 10 then -- Template namespace data.heading = i18n['template-namespace-heading'] elseif subjectSpace == 828 then -- Module namespace data.heading = i18n['module-namespace-heading'] elseif subjectSpace == 6 then -- File namespace data.heading = i18n['file-namespace-heading'] else data.heading = i18n['other-namespaces-heading'] end -- Data for the [view][edit][history][purge] or [create] links. if links then data.linksClass = message('start-box-linkclasses') data.linksId = message('start-box-link-id') data.links = links end return data end function p.renderStartBox(data) -- Renders the start box html. -- @data - a table of data generated by p.makeStartBoxData. local sbox = mw.html.create('div') sbox :addClass(message('header-div-class')) :tag('div') :addClass(message('heading-div-class')) :wikitext(data.heading) local links = data.links if links then sbox :tag('div') :addClass(data.linksClass) :attr('id', data.linksId) :wikitext(links) end return tostring(sbox) end ---------------------------------------------------------------------------- -- Documentation content ---------------------------------------------------------------------------- p.content = makeInvokeFunc('_content') function p._content(args, env) -- Displays the documentation contents -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment env = env or p.getEnvironment(args) local docTitle = env.docTitle local content = args.content if not content and docTitle and docTitle.exists then content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle} end -- The line breaks below are necessary so that "=== Headings ===" at the start and end -- of docs are interpreted correctly. local cbox = mw.html.create('div') cbox :addClass(message('content-div-class')) :wikitext('\n' .. (content or '') .. '\n') return tostring(cbox) end p.contentTitle = makeInvokeFunc('_contentTitle') function p._contentTitle(args, env) env = env or p.getEnvironment(args) local docTitle = env.docTitle if not args.content and docTitle and docTitle.exists then return docTitle.prefixedText else return '' end end ---------------------------------------------------------------------------- -- End box ---------------------------------------------------------------------------- p.endBox = makeInvokeFunc('_endBox') function p._endBox(args, env) --[=[ -- This function generates the end box (also known as the link box). -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment --]=] -- Get environment data. env = env or p.getEnvironment(args) local subjectSpace = env.subjectSpace local docTitle = env.docTitle if not subjectSpace or not docTitle then return nil end -- Check whether we should output the end box at all. Add the end -- box by default if the documentation exists or if we are in the -- user, module or template namespaces. local linkBox = args['link box'] if linkBox == 'off' or not ( docTitle.exists or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 ) then return nil end -- Assemble the footer text field. local text = '' if linkBox then text = text .. linkBox else text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]." if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then -- We are in the user, template or module namespaces. -- Add sandbox and testcases links. -- "Editors can experiment in this template's sandbox and testcases pages." text = text .. (p.makeExperimentBlurb(args, env) or '') text = text .. '<br />' if not args.content and not args[1] then -- "Please add categories to the /doc subpage." -- Don't show this message with inline docs or with an explicitly specified doc page, -- as then it is unclear where to add the categories. text = text .. (p.makeCategoriesBlurb(args, env) or '') end text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template" local printBlurb = p.makePrintBlurb(args, env) -- Two-line blurb about print versions of templates. if printBlurb then text = text .. '<br />' .. printBlurb end end end local ebox = mw.html.create('div') ebox :addClass(message('footer-div-class')) :wikitext(text) return tostring(ebox) end function p.makeDocPageBlurb(args, env) --[=[ -- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)". -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'transcluded-from-blurb' --> -- 'The above [[w:Wikipedia:Template documentation|documentation]] -- is [[w:Wikipedia:Transclusion|transcluded]] from $1.' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'create-link-display' --> 'create' -- 'create-module-doc-blurb' --> -- 'You might want to $1 a documentation page for this [[w:Wikipedia:Lua|Scribunto module]].' --]=] local docTitle = env.docTitle if not docTitle or args.content then return nil end local ret if docTitle.exists then -- /doc exists; link to it. local docLink = makeWikilink(docTitle.prefixedText) local editUrl = docTitle:fullUrl{action = 'edit'} local editDisplay = i18n['edit-link-display'] local editLink = makeUrlLink(editUrl, editDisplay) local historyUrl = docTitle:fullUrl{action = 'history'} local historyDisplay = i18n['history-link-display'] local historyLink = makeUrlLink(historyUrl, historyDisplay) ret = message('transcluded-from-blurb', {docLink}) .. ' ' .. makeToolbar(editLink, historyLink) .. '<br />' elseif env.subjectSpace == 828 then -- /doc does not exist; ask to create it. local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')} local createDisplay = i18n['create-link-display'] local createLink = makeUrlLink(createUrl, createDisplay) ret = message('create-module-doc-blurb', {createLink}) .. '<br />' end return ret end function p.makeExperimentBlurb(args, env) --[[ -- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-link-display' --> 'sandbox' -- 'sandbox-edit-link-display' --> 'edit' -- 'compare-link-display' --> 'diff' -- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'sandbox-create-link-display' --> 'create' -- 'mirror-edit-summary' --> 'Create sandbox version of $1' -- 'mirror-link-display' --> 'mirror' -- 'mirror-link-preload' --> 'Template:Documentation/mirror' -- 'sandbox-link-display' --> 'sandbox' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display'--> 'edit' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'testcases-create-link-display' --> 'create' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display' --> 'edit' -- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases' -- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases' -- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.' -- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle local testcasesTitle = env.testcasesTitle local templatePage = templateTitle.prefixedText if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then return nil end -- Make links. local sandboxLinks, testcasesLinks if sandboxTitle.exists then local sandboxPage = sandboxTitle.prefixedText local sandboxDisplay = message('sandbox-link-display') local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay) local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'} local sandboxEditDisplay = message('sandbox-edit-link-display') local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay) local compareUrl = env.compareUrl local compareLink if compareUrl then local compareDisplay = message('compare-link-display') compareLink = makeUrlLink(compareUrl, compareDisplay) end sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink) else local sandboxPreload if subjectSpace == 828 then sandboxPreload = message('module-sandbox-preload') else sandboxPreload = message('template-sandbox-preload') end local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload} local sandboxCreateDisplay = message('sandbox-create-link-display') local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)}) local mirrorPreload = message('mirror-link-preload') local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} local mirrorDisplay = message('mirror-link-display') local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) end if testcasesTitle.exists then local testcasesPage = testcasesTitle.prefixedText local testcasesDisplay = message('testcases-link-display') local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay) local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'} local testcasesEditDisplay = message('testcases-edit-link-display') local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) else local testcasesPreload if subjectSpace == 828 then testcasesPreload = message('module-testcases-preload') else testcasesPreload = message('template-testcases-preload') end local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload} local testcasesCreateDisplay = message('testcases-create-link-display') local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink) end local messageName if subjectSpace == 828 then messageName = 'experiment-blurb-module' else messageName = 'experiment-blurb-template' end return message(messageName, {sandboxLinks, testcasesLinks}) end function p.makeCategoriesBlurb(args, env) --[[ -- Generates the text "Please add categories to the /doc subpage." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'doc-link-display' --> '/doc' -- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.' --]] local docTitle = env.docTitle if not docTitle then return nil end local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display')) return message('add-categories-blurb', {docPathLink}) end function p.makeSubpagesBlurb(args, env) --[[ -- Generates the "Subpages of this template" link. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'template-pagetype' --> 'template' -- 'module-pagetype' --> 'module' -- 'default-pagetype' --> 'page' -- 'subpages-link-display' --> 'Subpages of this $1' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle if not subjectSpace or not templateTitle then return nil end local pagetype if subjectSpace == 10 then pagetype = message('template-pagetype') elseif subjectSpace == 828 then pagetype = message('module-pagetype') else pagetype = message('default-pagetype') end local subpagesLink = makeWikilink( 'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', message('subpages-link-display', {pagetype}) ) return message('subpages-blurb', {subpagesLink}) end function p.makePrintBlurb(args, env) --[=[ -- Generates the blurb displayed when there is a print version of the template available. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'print-link-display' --> '/Print' -- 'print-blurb' --> 'A [[Help:Books/for experts#Improving the book layout|print version]]' -- .. ' of this template exists at $1.' -- .. ' If you make a change to this template, please update the print version as well.' -- 'display-print-category' --> true -- 'print-category' --> 'Templates with print versions' --]=] local printTitle = env.printTitle if not printTitle then return nil end local ret if printTitle.exists then local printLink = makeWikilink(printTitle.prefixedText, message('print-link-display')) ret = message('print-blurb', {printLink}) local displayPrintCategory = message('display-print-category', nil, 'boolean') if displayPrintCategory then ret = ret .. makeCategoryLink(message('print-category')) end end return ret end ---------------------------------------------------------------------------- -- Tracking categories ---------------------------------------------------------------------------- function p.addTrackingCategories(env) --[[ -- Check if {{documentation}} is transcluded on a /doc or /testcases page. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'display-strange-usage-category' --> true -- 'doc-subpage' --> 'doc' -- 'testcases-subpage' --> 'testcases' -- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage' -- -- /testcases pages in the module namespace are not categorised, as they may have -- {{documentation}} transcluded automatically. --]] local title = env.title local subjectSpace = env.subjectSpace if not title or not subjectSpace then return nil end local subpage = title.subpageText local ret = '' if message('display-strange-usage-category', nil, 'boolean') and ( subpage == message('doc-subpage') or subjectSpace ~= 828 and subpage == message('testcases-subpage') ) then ret = ret .. makeCategoryLink(message('strange-usage-category')) end return ret end return p a029650bff998bd1a25784b49e99f984f068d85d Module:Lua banner/config 828 324 644 2023-04-27T18:24:41Z BEELETH 2 Created page with "local cfg = {} -- Don’t touch this line. -- Subpage blacklist: these subpages will not be categorized (except for the -- error category, which is always added if there is an error). -- For example “Template:Foo/doc” matches the `doc = true` rule, so it will have -- no categories. “Template:Foo” and “Template:Foo/documentation” match no rules, -- so they *will* have categories. All rules should be in the -- ['<subpage name>'] = true, -- format. cfg['subpa..." Scribunto text/plain local cfg = {} -- Don’t touch this line. -- Subpage blacklist: these subpages will not be categorized (except for the -- error category, which is always added if there is an error). -- For example “Template:Foo/doc” matches the `doc = true` rule, so it will have -- no categories. “Template:Foo” and “Template:Foo/documentation” match no rules, -- so they *will* have categories. All rules should be in the -- ['<subpage name>'] = true, -- format. cfg['subpage_blacklist'] = { ['doc'] = true, ['sandbox'] = true, ['sandbox2'] = true, ['testcases'] = true, } -- Allow wishes: whether wishes for conversion to Lua are allowed. -- If true, calls with zero parameters are valid, and considered to be wishes: -- The box’s text is “This template should use Lua”, and cfg['wish_category'] is -- added. If false, such calls are invalid, an error message appears, and -- cfg['error_category'] is added. cfg['allow_wishes'] = false -- Default category: this category is added if the module call contains errors -- (e.g. no module listed). A category name without namespace, or nil -- to disable categorization (not recommended). cfg['error_category'] = 'Lua templates with errors' -- Wish category: this category is added if no module is listed, and wishes are -- allowed. (Not used if wishes are not allowed.) A category name without -- namespace, or nil to disable categorization. cfg['wish_category'] = nil -- Default category: this category is added if none of the below module_categories -- matches the first module listed. A category name without namespace, or nil -- to disable categorization. cfg['default_category'] = 'Lua-based templates' -- Module categories: one of these categories is added if the first listed module -- is the listed module (e.g. {{Lua|Module:String}} adds -- [[Category:Lua String-based templates]].) Format: -- ['<module name>'] = '<category name>' -- where neither <module name> nor <category name> contains namespace. An empty -- table (i.e. no module-based categorization) will suffice on smaller wikis. cfg['module_categories'] = { ['Citation'] = 'Lua-based citation templates', ['Citation/CS1'] = 'Lua-based citation templates', } return cfg -- Don’t touch this line. 96ff2360e00fa7bf1df8fa9bea988789b8a82cab Module:Hatnote 828 70 645 390 2023-04-27T18:27:43Z BEELETH 2 Scribunto text/plain -------------------------------------------------------------------------------- -- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the {{hatnote}} and {{format link}} meta-templates and includes -- -- helper functions for other Lua hatnote modules. -- -------------------------------------------------------------------------------- local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg local mArguments -- lazily initialise [[Module:Arguments]] local yesno -- lazily initialise [[Module:Yesno]] local formatLink -- lazily initialise [[Module:Format link]] ._formatLink local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end function p.defaultClasses(inline) -- Provides the default hatnote classes as a space-separated string; useful -- for hatnote-manipulation modules like [[Module:Hatnote group]]. return (inline == 1 and 'hatnote-inline' or 'hatnote') .. ' ' .. 'navigation-not-searchable' end function p.disambiguate(page, disambiguator) -- Formats a page title with a disambiguation parenthetical, -- i.e. "Example" → "Example (disambiguation)". checkType('disambiguate', 1, page, 'string') checkType('disambiguate', 2, disambiguator, 'string', true) disambiguator = disambiguator or 'disambiguation' return mw.ustring.format('%s (%s)', page, disambiguator) end function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to false. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end function p.makeWikitextError(msg, helpLink, addTrackingCategory, title) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- [[Module:Yesno]], and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') title = title or mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' ([[' .. helpLink .. '|help]])' else helpText = '' end -- Make the category text. local category if not title.isTalkPage -- Don't categorise talk pages and title.namespace ~= 2 -- Don't categorise userspace and yesno(addTrackingCategory) ~= false -- Allow opting out then category = 'Hatnote templates with errors' category = mw.ustring.format( '[[%s:%s]]', mw.site.namespaces[14].name, category ) else category = '' end return mw.ustring.format( '<strong class="error">Error: %s%s.</strong>%s', msg, helpText, category ) end local curNs = mw.title.getCurrentTitle().namespace p.missingTargetCat = --Default missing target category, exported for use in related modules ((curNs == 0) or (curNs == 14)) and 'Articles with hatnote templates targeting a nonexistent page' or nil function p.quote(title) --Wraps titles in quotation marks. If the title starts/ends with a quotation --mark, kerns that side as with {{-'}} local quotationMarks = { ["'"]=true, ['"']=true, ['“']=true, ["‘"]=true, ['”']=true, ["’"]=true } local quoteLeft, quoteRight = -- Test if start/end are quotation marks quotationMarks[string.sub(title, 1, 1)], quotationMarks[string.sub(title, -1, -1)] if quoteLeft or quoteRight then title = mw.html.create("span"):wikitext(title) end if quoteLeft then title:css("padding-left", "0.15em") end if quoteRight then title:css("padding-right", "0.15em") end return '"' .. tostring(title) .. '"' end -------------------------------------------------------------------------------- -- Hatnote -- -- Produces standard hatnote text. Implements the {{hatnote}} template. -------------------------------------------------------------------------------- function p.hatnote(frame) local args = getArgs(frame) local s = args[1] if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end return p._hatnote(s, { extraclasses = args.extraclasses, selfref = args.selfref }) end function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) options = options or {} local inline = options.inline local hatnote = mw.html.create(inline == 1 and 'span' or 'div') local extraclasses if type(options.extraclasses) == 'string' then extraclasses = options.extraclasses end hatnote :attr('role', 'note') :addClass(p.defaultClasses(inline)) :addClass(extraclasses) :addClass(options.selfref and 'selfref' or nil) :wikitext(s) return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Module:Hatnote/styles.css' } } .. tostring(hatnote) end return p 3ae1ed7094c5005ca0896395ec9a587287a0bef1 Template:Hatnote 10 55 646 109 2023-04-27T18:55:29Z BEELETH 2 please please please work :( wikitext text/x-wiki <div style="margin-left:2em; margin-right: 2em;>''{{{1}}}''</div> <!-- The wikipedia templates uses :, which generated dd and dt tags. That is not ideal for accessibility. --><noinclude> This is a general purpose template for all kind of [https://en.wikipedia.org/wiki/Wikipedia:Hatnote hatnotes]. '''Hatnotes''' are a small annotation above a page or a section that can help the reader navigate. It's used for example to clarify what a section is about and link to other pages the reader may want to read. == Example usage == <pre><nowiki> === Heading === {{hatnote|This section is about headings in text, for the human body part see [[Head|Head]]. <br> For the the first level heading see the main article [[Headline]].</br> H1 redirects here, for the car see [[Hyundai#H1|Hyundai H1]].}} The first sentence of the section is here. </nowiki></pre> === Heading === {{hatnote|This section is about headings in text, for the human body part see [[Head|Head]]. <br> For the the first level heading see the main article [[Headline]].</br> H1 redirects here, for the car see [[Hyundai#H1|Hyundai H1]].}} The first sentence of the section is here. <templatedata> { "params": { "1": { "label": "content", "description": "the content of the note", "example": "For the xxx see [[yyy]]." } }, "description": "Adds a annotation for the reader about the content that follows. Usually used after a heading." } </templatedata> [[Category:Templates]] </noinclude> 5e58f83d6fa53ed06f85139184aff1d651804efe Module:Userbox 828 325 648 2023-04-27T19:31:36Z BEELETH 2 ya Scribunto text/plain -- This module implements {{userbox}}. local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function checkNum(val, default) -- Checks whether a value is a number greater than or equal to zero. If so, -- returns it as a number. If not, returns a default value. val = tonumber(val) if val and val >= 0 then return val else return default end end local function addSuffix(num, suffix) -- Turns a number into a string and adds a suffix. if num then return tostring(num) .. suffix else return nil end end local function checkNumAndAddSuffix(num, default, suffix) -- Checks a value with checkNum and adds a suffix. num = checkNum(num, default) return addSuffix(num, suffix) end local function makeCat(cat, sort) -- Makes a category link. if sort then return mw.ustring.format('[[Category:%s|%s]]', cat, sort) else return mw.ustring.format('[[Category:%s]]', cat) end end -------------------------------------------------------------------------------- -- Argument processing -------------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local origArgs = require('Module:Arguments').getArgs(frame) local args = {} for k, v in pairs(origArgs) do args[k] = v end return p.main(funcName, args) end end p.userbox = makeInvokeFunc('_userbox') p['userbox-2'] = makeInvokeFunc('_userbox-2') p['userbox-r'] = makeInvokeFunc('_userbox-r') -------------------------------------------------------------------------------- -- Main functions -------------------------------------------------------------------------------- function p.main(funcName, args) local userboxData = p[funcName](args) local userbox = p.render(userboxData) local cats = p.categories(args) return userbox .. (cats or '') end function p._userbox(args) -- Does argument processing for {{userbox}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args[1] or args['border-c'] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] data.infoClass = args['info-class'] -- Get id values. local id = args.logo or args[3] or args.id data.id = id data.showId = id and true or false data.idWidth = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.idBackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.idTextAlign = args['id-a'] or 'center' data.idFontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt') data.idColor = args['logo-color'] or args['id-fc'] or data.infoColor data.idPadding = args['logo-padding'] or args['id-p'] or '0 1px 0 0' data.idLineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.idOtherParams = args['logo-other-param'] or args['id-op'] data.idClass = args['id-class'] return data end p['_userbox-2'] = function (args) -- Does argument processing for {{userbox-2}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args[9] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args[1] or args['border-c'] or args['id1-c'] or '#999999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args[2] or args['info-c'] or '#eeeeee' -- Get info values. data.info = args[4] or args.info or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-s'], 8, 'pt') data.infoColor = args[8] or args['info-fc'] or 'black' data.infoPadding = args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-lh'] or '1.25em' data.infoOtherParams = args['info-op'] -- Get id values. data.showId = true data.id = args.logo or args[3] or args.id1 or 'id1' data.idWidth = checkNumAndAddSuffix(args['id1-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['id-h'], 45, 'px') data.idBackgroundColor = args[1] or args['id1-c'] or '#dddddd' data.idTextAlign = 'center' data.idFontSize = checkNumAndAddSuffix(args['id1-s'], 14, 'pt') data.idLineHeight = args['id1-lh'] or '1.25em' data.idColor = args['id1-fc'] or data.infoColor data.idPadding = args['id1-p'] or '0 1px 0 0' data.idOtherParams = args['id1-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[5] or args.id2 or 'id2' data.id2Width = checkNumAndAddSuffix(args['id2-w'], 45, 'px') data.id2Height = data.idHeight data.id2BackgroundColor = args[7] or args['id2-c'] or args[1] or '#dddddd' data.id2TextAlign = 'center' data.id2FontSize = checkNumAndAddSuffix(args['id2-s'], 14, 'pt') data.id2LineHeight = args['id2-lh'] or '1.25em' data.id2Color = args['id2-fc'] or data.infoColor data.id2Padding = args['id2-p'] or '0 0 0 1px' data.id2OtherParams = args['id2-op'] return data end p['_userbox-r'] = function (args) -- Does argument processing for {{userbox-r}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args[1] or args['border-c'] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get id values. data.showId = false -- We only show id2 in userbox-r. -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-align'] or args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[3] or args.id or 'id' data.id2Width = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.id2Height = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.id2BackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.id2TextAlign = args['id-a'] or 'center' data.id2FontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt') data.id2Color = args['logo-color'] or args['id-fc'] or data.infoColor data.id2Padding = args['logo-padding'] or args['id-p'] or '0 0 0 1px' data.id2LineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.id2OtherParams = args['logo-other-param'] or args['id-op'] return data end function p.render(data) -- Renders the userbox html using the content of the data table. -- Render the div tag html. local root = mw.html.create('div') root :css('float', data.float) :css('border', (data.borderWidth or '') .. ' solid ' .. (data.borderColor or '')) :css('margin', '1px') :css('width', data.width) :addClass('wikipediauserbox') :addClass(data.bodyClass) -- Render the table tag html. local tableroot = root:tag('table') tableroot :css('border-collapse', 'collapse') :css('width', data.width) :css('margin-bottom', '0') :css('margin-top', '0') :css('background', data.backgroundColor) -- Render the id html. local tablerow = tableroot:tag('tr') if data.showId then tablerow:tag('th') :css('border', '0') :css('width', data.idWidth) :css('height', data.idHeight) :css('background', data.idBackgroundColor) :css('text-align', data.idTextAlign) :css('font-size', data.idFontSize) :css('color', data.idColor) :css('padding', data.idPadding) :css('line-height', data.idLineHeight) :css('vertical-align', 'middle') :cssText(data.idOtherParams) :addClass(data.idClass) :wikitext(data.id) end -- Render the info html. tablerow:tag('td') :css('border', '0') :css('text-align', data.infoTextAlign) :css('font-size', data.infoFontSize) :css('padding', data.infoPadding) :css('height', data.infoHeight) :css('line-height', data.infoLineHeight) :css('color', data.infoColor) :css('vertical-align', 'middle') :cssText(data.infoOtherParams) :addClass(data.infoClass) :wikitext(data.info) -- Render the second id html. if data.showId2 then tablerow:tag('th') :css('border', '0') :css('width', data.id2Width) :css('height', data.id2Height) :css('background', data.id2BackgroundColor) :css('text-align', data.id2TextAlign) :css('font-size', data.id2FontSize) :css('color', data.id2Color) :css('padding', data.id2Padding) :css('line-height', data.id2LineHeight) :css('vertical-align', 'middle') :cssText(data.id2OtherParams) :wikitext(data.id2) end local title = mw.title.getCurrentTitle() if (title.namespace == 2) and not title.text:match("/") then return tostring(root) -- regular user page elseif title.namespace == 14 then return tostring(root) -- category elseif title.isTalkPage then return tostring(root) -- talk page end local function has_text(wikitext) local function get_alt(text) return text:match("|alt=([^|]*)") or "" end wikitext = wikitext:gsub("]]", "|]]") wikitext = wikitext:gsub("%[%[%s*[Mm][Ee][Dd][Ii][Aa]%s*:[^|]-(|.-)]]", get_alt) wikitext = wikitext:gsub("%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:[^|]-(|.-)]]", get_alt) wikitext = wikitext:gsub("%[%[%s*[Ff][Ii][Ll][Ee]%s*:[^|]-(|.-)]]", get_alt) return mw.text.trim(wikitext) ~= "" end return tostring(root) end function p.categories(args, page) -- Gets categories -- The page parameter makes the function act as though the module was being called from that page. -- It is included for testing purposes. local cats = {} cats[#cats + 1] = args.usercategory cats[#cats + 1] = args.usercategory2 cats[#cats + 1] = args.usercategory3 if #cats > 0 and not require("Module:Yesno")(args.nocat) then -- Get the title object local title if page then title = mw.title.new(page) else title = mw.title.getCurrentTitle() end -- Build category handler arguments. local chargs = {} chargs.page = page chargs.main = '[[Category:Pages with misplaced templates]]' if title.namespace == 2 then -- User namespace. local user = '' for i, cat in ipairs(cats) do user = user .. makeCat(cat) end return user elseif title.namespace == 10 then -- Template namespace. local basepage = title.baseText local template = '' for i, cat in ipairs(cats) do template = template .. makeCat(cat, ' ' .. basepage) end return template end end end return p aac333efff739f0243d8ffced6f4296cffb8d7e9 Template:Userbox 10 326 649 2023-04-27T19:31:49Z BEELETH 2 ya wikitext text/x-wiki {{#invoke:userbox|userbox}}<noinclude>{{documentation}}</noinclude> 6813e8e31cadc62df2379b5fae9ea23c23f29e97 Template:Userbox/doc 10 327 650 2023-04-27T19:32:11Z BEELETH 2 ya wikitext text/x-wiki {{Documentation subpage}} <!-- Categories go at the bottom of this page and interwikis go in Wikidata. --> This template can be used to quickly create a [[w:Wikipedia:Userboxes|userbox]] for display on a user's [[Wikipedia:User pages|user page]] without having to know HTML or Wikitable syntax. == Usage == <!-- Abstract usage of the template, one variable per row. --> <pre style="overflow: auto"> {{userbox | bodyclass = <!--Adds an HTML class attribute to the entire template's HTML table, to allow for styling, emission of microformats, etc.--> | border-c = <!--border color (default=id-c or #999999)--> | border-s = <!--border width in pixels (default=1)--> | float = <!--left|right|none (default=left)--> | id = <!--id image or text (image size should normally not exceed 90x45px)--> | id-a = <!--id horizontal alignment left/center/right/justify (default=center)--> | id-c = <!--id background color (default=#DDDDDD)--> | id-fc = <!--id font color (default=info-fc or black)--> | id-h = <!--id box height in pixels (default=45)--> | id-lh = <!--id line height (default=1.25em)--> | id-op = <!--id other CSS parameters--> | id-p = <!--id cell padding (default=0 1px 0 0)--> | id-s = <!--id text size in points (default=14)--> | id-w = <!--id box width in pixels (default=45)--> | info-class = <!--Adds an HTML class attribute to the "info" HTML table-row, to allow for styling, emission of microformats, etc.--> | info = <!--info text or image--> | info-a = <!--info horizontal alignment left/center/right/justify (default=left)--> | info-c = <!--info background color (default=#EEEEEE)--> | info-fc = <!--info font color (default=black)--> | info-lh = <!--info line height (default=1.25em)--> | info-op = <!--info other CSS parameters--> | info-p = <!--info padding (default=0 4px 0 4px)--> | info-s = <!--info text size in points (default=8)--> | nocat = <!--block page category declarations; see [[WP:NOCAT]] (default=false)--> | usercategory = <!--user category (optional, unlinked and without the "Category:" part)--> | usercategory2 = <!--user category (optional)--> | usercategory3 = <!--user category (optional)--> | usercategory4 = <!--user category (optional)--> | usercategory5 = <!--user category (optional)--> }} </pre> * All parameters are optional. * Images should normally be scaled to x45px or less. <!-- Explain what this template's parameters do -- if no params, delete the definition. --> Most HTML-based tables use only a handful of these attributes. The following subset can be used to quickly convert an HTML userbox into the format used here: <pre> {{userbox | border-c = | id = | id-c = | id-fc = | id-s = | info = | info-c = | info-fc = | info-lh = | info-s = }}</pre> == Examples == {| ! style="width: 300px;" | Code ! Result |- | <pre>{{userbox | border-c = #aaffaa | border-s = 2 | id = foo | id-c = #ffffee | id-s = 20 | info = ''foo bar'' | info-c = #ffeeff | info-s = 12 }}</pre> || {{userbox|id=foo|id-s=20|id-c=#ffffee|info=''foo bar''|info-c=#ffeeff|info-s=12|border-c=#aaffaa|border-s=2}} |- | colspan="2"| Below example shows the default appearance of a userbox, which is (much) higher than the 45px.<br>Compare the height of the one below with the above userbox. |- | <pre>{{userbox | border-c = #aaffaa | border-s = 2 | id = foo logo | id-c = #ffffee | info = ''We are trying to see default distance in between text lines, see the distance in between cell content and its border, and also see total height.'' | info-c = #ffeeff }}</pre> || {{userbox|id=foo logo|id-c=#ffffee|info=''We are trying to see default distance in between text lines, see the distance in between cell content and its border, and also see total height.''|info-c=#ffeeff|border-c=#aaffaa|border-s=2}} |- | colspan="2"| Below example shows how we can change that userbox and further specify parameters to bring down<br>the overall height of the userbox to the recommended height of 45px, even with four text lines.<br>Cell padding parameter "''info-p''" can also be set at "''1pt 1pt 1pt 2pt''", or "''1pt 2pt''" for better appearance,<br>when there are 4 text lines. |- | <pre>{{userbox | border-c = #aaffaa | border-s = 1 | id = foo logo | id-c = #ffffee | id-lh = 1.1em | id-s = 14 | info = ''We have specified values to lessen the distance between text lines and padding space between cell content and its border.'' | info-c = #ffeeff | info-lh = 1.05em | info-p = 1pt | info-s = 8 }}</pre> || {{userbox|id=foo logo|id-s=14|id-lh=1.1em|id-c=#ffffee|info=''We have specified values to lessen the distance between text lines and padding space between cell content and its border.''|info-c=#ffeeff|info-s=8|info-p=1pt|info-lh=1.05em|border-c=#aaffaa|border-s=1}} |- | colspan="2"| Below example is for advanced users, showing how we can specify other [[w:Cascading Style Sheets|CSS]] properties,for example, "''font-family''",<br>to change the font or "''text-decoration''" to add lines around the text. Below, on the right side are two userboxes:<br>the top one is displayed without either parameters; and the bottom userbox is displayed by using the below code,<br>with the help of the "''info-op''" field. |- | <pre>{{userbox | border-c = #afa | border-s = 2 | id = foo logo | id-c = #ffe | id-lh = 1.1em | id-s = 14 | info = foo bar | info-c = #fef | info-op = font-family: 'Courier New', monospace; text-decoration: wavy overline green; | info-s = 14 }}</pre> || colspan="2"| {{Userbox|id=foo logo|id-s=14|id-lh=1.1em|id-c=#ffe|info=foo bar|info-c=#fef|info-s=14|border-c=#afa|border-s=2}} <br style="clear:both">&#160;<br /> {{Userbox|id=foo logo|id-s=14|id-lh=1.1em|id-c=#ffe|info=foo bar|info-c=#fef|info-s=14|info-op=font-family: 'Courier New', monospace; text-decoration: wavy overline green;|border-c=#afa|border-s=2}} |} ==Microformats== ; bodyclass : This parameter is inserted into the "class" attribute for the userbox as a whole. ; info-class : This parameter is inserted into the "class" attribute for the info component. This template supports the addition of [[w:microformat|microformat]] information. This is done by adding "class" attributes to various data cells, indicating what kind of information is contained within. To flag a userbox as containing [[w:hCard|hCard]] information about a person, for example, add the following parameter: <pre> | bodyclass = vcard </pre> ''or'' <pre> | info-class = vcard </pre> ''then'' (for example): <pre><nowiki> | title = …the books of <span class="fn">[[Iain Banks]]</span> </nowiki></pre> ...and so forth. See [[w:Wikipedia:WikiProject Microformats]] for more information on adding microformat information to Wikipedia. == Template Data == <TemplateData>{ "description": "This template can be used to quickly create a userbox for display on a user's user page without having to know HTML or Wikitable syntax.", "params": { "bodyclass": { "label": "bodyclass", "description": "Adds an HTML class attribute to the entire template's HTML table, to allow for styling, emission of microformats, etc.", "type": "string", "required": false }, "border-c": { "label": "border-c", "description": "border color", "type": "string", "default": "#999", "required": false }, "border-s": { "label": "border-s", "description": "border width in pixels", "type": "string", "default": "1", "required": false }, "float": { "label": "float", "description": "left|right|none", "type": "string", "default": "left", "required": false }, "id": { "label": "id", "description": "id image or text", "type": "string", "required": false }, "id-a": { "label": "id-a", "description": "id horizontal alignment left/center/right/justify", "type": "string", "default": "center", "required": false }, "id-c": { "label": "id-c", "description": "id background color", "type": "string", "default": "#d0d0d0", "required": false }, "id-fc": { "label": "id-fc", "description": "id font color", "type": "string", "default": "black", "required": false }, "id-h": { "label": "id-h", "description": "id box height in pixels", "type": "string", "default": "45", "required": false }, "id-lh": { "label": "id-lh", "description": "id line height", "type": "string", "default": "1.25em", "required": false }, "id-op": { "label": "id-op", "description": "id other CSS parameters", "type": "string", "required": false }, "id-p": { "label": "id-p", "description": "id cell padding", "type": "string", "default": "0 1px 0 0", "required": false }, "id-s": { "label": "id-s", "description": "id text size in points", "type": "string", "default": "14", "required": false }, "id-w": { "label": "id-w", "description": "id box width in pixels", "type": "string", "default": "45", "required": false }, "info-class": { "label": "info-class", "description": "Adds an HTML class attribute to the \"info\" HTML table-row, to allow for styling, emission of microformats, etc.", "type": "string", "required": false }, "info": { "label": "info", "description": "info text or image", "type": "string", "required": false }, "info-a": { "label": "info-a", "description": "info horizontal alignment left/center/right/justify", "type": "string", "default": "left", "required": false }, "info-c": { "label": "info-c", "description": "info background color", "type": "string", "default": "#e0e0e0", "required": false }, "info-fc": { "label": "info-fc", "description": "info font color", "type": "string", "default": "black", "required": false }, "info-lh": { "label": "info-lh", "description": "info line height", "type": "string", "default": "1.25em", "required": false }, "info-op": { "label": "info-op", "description": "info other CSS parameters", "type": "string", "required": false }, "info-p": { "label": "info-p", "description": "info padding", "type": "string", "default": "0 4px 0 4px", "required": false }, "info-s": { "label": "info-s", "description": "info text size in points", "type": "string", "default": "8", "required": false }, "nocat": { "label": "nocat", "description": "block page category declarations (see WP:NOCAT)", "type": "string", "default": "false", "required": false }, "usercategory": { "label": "usercategory", "description": "user category (optional)", "type": "string", "required": false }, "usercategory2": { "label": "usercategory2", "description": "user category (optional)", "type": "string", "required": false }, "usercategory3": { "label": "usercategory3", "description": "user category (optional)", "type": "string", "required": false }, "usercategory4": { "label": "usercategory4", "description": "user category (optional)", "type": "string", "required": false }, "usercategory5": { "label": "usercategory5", "description": "user category (optional)", "type": "string", "required": false } }, "format": "block" }</TemplateData> <includeonly>[[Category:Templates]]</includeonly> dd41ebb3f967b6cdfb1f5802c2bdd71bc115e74a User:BEELETH 2 163 651 325 2023-04-27T19:33:23Z BEELETH 2 wikitext text/x-wiki placeholder text ac0c50f41ac8bd11c26f13634268964bb35dc157 654 651 2023-04-27T20:55:30Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Halberd Aswang|image=[[File:Halbrown.png|200px|alt=Halberd with brown hair]]|caption=The REAL ONE!!!!|header1=Descriptors|label2=Other names|data2=* Al * Hal * Halb * Halby|label3=Genders and labels|data3=Epicene, intersex, bear|label4=Pronouns|data4=* they/them * he/him * it/its * that one/that one's|label5=Orientation|data5=Autosexual, aromantic, polyamorous|label6=Species|data6=[[Human]], but evil}} hi im hal and i run this place == about me == basement-dwelling neckbeard in spirit. im the scary dog-eater your neighbors warned you about === likes === * yoeko kurahashi (pls join r/YoekoKurahashi) * dj technorch * pokemon * klonoa * rhythm games === dislikes === * olives * cleaning * working on the fucken WIKI!!! GOD DAMN!!!!!!!!!! === other things about me === im good at smash and i like playing as incineroar and pink villager. pretty good at muse dash too == about my works == i make things that i like and other people also tend to like my stuff and i think thats pretty cool === achievemnet and porfolo === halberd haves many achievemnts in his life.......... * character artist and designer for maxein * made some emojis and stickers for the be an alien: renewal discord server * emoji artist for the shark army discord server * open source objects contributor ==== trivial achieves ==== * met rockhopper in og club penguin * neopets + roblox player of over 10 yrs * one of the .gg/garfield 10k event jackbox winners * people like my art and i have been featured a few times in various things ** featured in the nintendo switch news feed for ultimate chicken horse twice ** my art is in the lost media wiki fanart section * people like using my stuff and i think thats fun ** original creator of some of those clonable mlp skins on manyland *** shoutout to coffeebug for using my stuff beyond ml we love to see it ** original creator of bunjees + bunjeecorp ** original creator of the anvil skins on manyland * i can beat my mom at tetris thats cool i think == trivia == * #00FF00 === name origin === halberd is wepon. aswang is aswang. you a jokester? == contact == see beeleth.carrd.co 121a8ca81b60077a24b1908eee9f31aec354d656 659 654 2023-05-23T04:59:23Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Halberd Aswang|image=[[File:Halbrown.png|200px|alt=Halberd with brown hair]]|caption=The REAL ONE!!!!|header1=Descriptors|label2=Other names|data2=* Al * Hal * Halb * Halby|label3=Genders and labels|data3=Epicene, intersex, bear|label4=Pronouns|data4=* they/them * he/him * it/its * that one/that one's|label5=Orientation|data5=Autosexual, aromantic, polyamorous|label6=Species|data6=[[Human]], but evil}} hi im hal and i run this place == about me == basement-dwelling neckbeard in spirit. im the scary dog-eater your neighbors warned you about === likes === * yoeko kurahashi (pls join r/YoekoKurahashi) * dj technorch * pokemon * klonoa * rhythm games === dislikes === * olives * cleaning * working on the fucken WIKI!!! GOD DAMN!!!!!!!!!! === other things about me === im good at smash and i like playing as incineroar and pink villager. pretty good at muse dash too == about my works == i make things that i like and other people also tend to like my stuff and i think thats pretty cool === achievemnet and porfolo === halberd haves many achievemnts in his life.......... * former character artist and designer for maxein (as of this edit the project has been retired) * made some emojis and stickers for the be an alien: renewal discord server * emoji artist for the shark army discord server * open source objects contributor + character cameo in short 1 ==== trivial achieves ==== * met rockhopper in og club penguin * neopets + roblox player of over 10 yrs * one of the .gg/garfield 10k event jackbox winners * people like my art and i have been featured a few times in various things ** featured in the nintendo switch news feed for ultimate chicken horse twice ** my art is in the lost media wiki fanart section * people like using my stuff and i think thats fun ** original creator of some of those clonable mlp skins on manyland *** shoutout to coffeebug for using my stuff beyond ml we love to see it ** original creator of bunjees + bunjeecorp ** original creator of the anvil skins on manyland * i can beat my mom at tetris thats cool i think == trivia == * #00FF00 === name origin === halberd is wepon. aswang is aswang. you a jokester? == contact == see beeleth.carrd.co a7e4503c074475afe82c033b4a3a32c4aaad6c2b 660 659 2023-05-23T05:00:05Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Halberd Aswang|image=[[File:Halbrown.png|200px|alt=Halberd with brown hair]]|caption=The REAL ONE!!!!|header1=Descriptors|label2=Other names|data2=* Al * Hal * Halb * Halby|label3=Genders and labels|data3=Epicene, intersex, bear|label4=Pronouns|data4=* they/them * he/him * it/its * that one/that one's|label5=Orientation|data5=Autosexual, aromantic, polyamorous|label6=Species|data6=[[Human]], but evil}} hi im hal and i run this place == about me == basement-dwelling neckbeard in spirit. im the scary dog-eater your neighbors warned you about === likes === * yoeko kurahashi (pls join r/YoekoKurahashi) * dj technorch * pokemon * klonoa * rhythm games === dislikes === * olives * cleaning * working on the fucken WIKI!!! GOD DAMN!!!!!!!!!! === other things about me === im good at smash and i like playing as incineroar and pink villager. pretty good at muse dash too == about my works == i make things that i like and other people also tend to like my stuff and i think thats pretty cool === achievemnet and porfolo === halberd haves many achievemnts in his life.......... * former character artist and designer for maxein (as of this edit the project has been retired) * made some emojis and stickers for the be an alien: renewal discord server * emoji artist for the shark army discord server * open source objects contributor + character cameo in short 1 ==== trivial achieves ==== * met rockhopper in og club penguin * neopets + roblox player of over 10 yrs * one of the .gg/garfield 10k event jackbox winners * people like my art and i have been featured a few times in various things ** featured in the nintendo switch news feed for ultimate chicken horse twice ** my art is in the lost media wiki fanart section * people like using my stuff and i think thats fun ** original creator of some of those clonable mlp skins on manyland *** shoutout to coffeebug for using my stuff beyond ml we love to see it ** original creator of bunjees + bunjeecorp ** original creator of the anvil skins on manyland * i can beat my mom at tetris thats cool i think == trivia == * #00FF00 === name origin === halberd is wepon. aswang is aswang. you a jokester? == contact == see beeleth.carrd.co 38c791e143b89c2d7eb2d42c0df9ac737bf13fbd 661 660 2023-05-23T05:00:44Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Halberd Aswang|image=[[File:Halbrown.png|200px|alt=Halberd with brown hair]]|caption=The REAL ONE!!!!|header1=Descriptors|label2=Other names|data2=* Al * Hal * Halb * Halby|label3=Genders and labels|data3=Epicene, intersex, bear|label4=Pronouns|data4=* they/them * he/him * it/its * that one/that one's|label5=Orientation|data5=Autosexual, aromantic, polyamorous|label6=Species|data6=[[Human]], but evil}} == who that little dude on the screen == hi im hal and i run this place == about me == basement-dwelling neckbeard in spirit. im the scary dog-eater your neighbors warned you about === likes === * yoeko kurahashi (pls join r/YoekoKurahashi) * dj technorch * pokemon * klonoa * rhythm games === dislikes === * olives * cleaning * working on the fucken WIKI!!! GOD DAMN!!!!!!!!!! === other things about me === im good at smash and i like playing as incineroar and pink villager. pretty good at muse dash too == about my works == i make things that i like and other people also tend to like my stuff and i think thats pretty cool === achievemnet and porfolo === halberd haves many achievemnts in his life.......... * former character artist and designer for maxein (as of this edit the project has been retired) * made some emojis and stickers for the be an alien: renewal discord server * emoji artist for the shark army discord server * open source objects contributor + character cameo in short 1 ==== trivial achieves ==== * met rockhopper in og club penguin * neopets + roblox player of over 10 yrs * one of the .gg/garfield 10k event jackbox winners * people like my art and i have been featured a few times in various things ** featured in the nintendo switch news feed for ultimate chicken horse twice ** my art is in the lost media wiki fanart section * people like using my stuff and i think thats fun ** original creator of some of those clonable mlp skins on manyland *** shoutout to coffeebug for using my stuff beyond ml we love to see it ** original creator of bunjees + bunjeecorp ** original creator of the anvil skins on manyland * i can beat my mom at tetris thats cool i think == trivia == * #00FF00 === name origin === halberd is wepon. aswang is aswang. you a jokester? == contact == see beeleth.carrd.co c926192a1cb177291032b0169ecfd739a75b8340 662 661 2023-05-23T05:01:29Z BEELETH 2 wikitext text/x-wiki howdy howdyhowdy{{Infobox|above=Halberd Aswang|image=[[File:Halbrown.png|200px|alt=Halberd with brown hair]]|caption=The REAL ONE!!!!|header1=Descriptors|label2=Other names|data2=* Al * Hal * Halb * Halby|label3=Genders and labels|data3=Epicene, intersex, bear|label4=Pronouns|data4=* they/them * he/him * it/its * that one/that one's|label5=Orientation|data5=Autosexual, aromantic, polyamorous|label6=Species|data6=[[Human]], but evil}} == who that little dude on the screen == thats me!!!!!!!!! halberd!!!!!!!!!!!!!!!! idiot == about me == basement-dwelling neckbeard in spirit. im the scary dog-eater your neighbors warned you about === likes === * yoeko kurahashi (pls join r/YoekoKurahashi) * dj technorch * pokemon * klonoa * rhythm games === dislikes === * olives * cleaning * working on the fucken WIKI!!! GOD DAMN!!!!!!!!!! === other things about me === im good at smash and i like playing as incineroar and pink villager. pretty good at muse dash too == about my works == i make things that i like and other people also tend to like my stuff and i think thats pretty cool === achievemnet and porfolo === halberd haves many achievemnts in his life.......... * former character artist and designer for maxein (as of this edit the project has been retired) * made some emojis and stickers for the be an alien: renewal discord server * emoji artist for the shark army discord server * open source objects contributor + character cameo in short 1 ==== trivial achieves ==== * met rockhopper in og club penguin * neopets + roblox player of over 10 yrs * one of the .gg/garfield 10k event jackbox winners * people like my art and i have been featured a few times in various things ** featured in the nintendo switch news feed for ultimate chicken horse twice ** my art is in the lost media wiki fanart section * people like using my stuff and i think thats fun ** original creator of some of those clonable mlp skins on manyland *** shoutout to coffeebug for using my stuff beyond ml we love to see it ** original creator of bunjees + bunjeecorp ** original creator of the anvil skins on manyland * i can beat my mom at tetris thats cool i think == trivia == * #00FF00 === name origin === halberd is wepon. aswang is aswang. you a jokester? == contact == see beeleth.carrd.co 84f42b1c43a4f61c7c1665dc30222d2c1a55fd1d UserWiki:BEELETH 200 328 652 2023-04-27T19:33:27Z BEELETH 2 import user wiki wikitext text/x-wiki placeholder text ac0c50f41ac8bd11c26f13634268964bb35dc157 Uncharted Space 0 288 653 647 2023-04-27T20:35:14Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Uncharted Space|header1=Creation and development|label2=Development|data2=TBA|label3=Creator(s)|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Uncharted Zone|label6=Guardian(s)|data6=None}} The '''Uncharted Space''', originally referred to as the '''Uncharted Zone''', is a [[Space]] contained within [[Vast Space]]. There is no [[major deity]] associated with it. == Creation and development == In October of 2021, [[BEELETH]] had a dream in which they explored a then-non-existent character universe referred to as the Uncharted Zone. The basis of what they could remember of the dream's plot ended up becoming part of a new Space's lore. == In-universe history == The Uncharted Space is presumably a byproduct of [[Origin]]'s existence, as most things in the entirety of the Vast Space can be traced back to him. It was formed over time out of loose [[ichor]] into a distinct universe that is subject to several inexplicable rules (as most Spaces are). === Early history === The first parts of the Uncharted Space to take form in the [[Light Side]] are in [[Auophilon]], the former home of the Auophian people; it was situated on a peninsula surrounded by the Grand Ocean on three sides, and an unnamed forest on the other side. Guardians of elements and ideas, the [[Auophian pantheon]], made their first physical appearances around this time. As Auophilon developed, [[kineticism]] also became more prevalent. Though it was initially feared, it came to be known as generally good and allowed for communication with and rituals in honor of the deities the Auophian people revered. The only form of kineticm that was outright forbidden out of fear of misuse was [[alchemy]], which was practiced by some in secret. Some Auophians left their homeland in search of new land and resources, and the first long-term establishment became [[Citadelonia]]. Due to the immense distance between these [[locations]], communication was not feasible and Auophilon was slowly forgotten by those who left it. ==== Founding of Citadelonia ==== Citadelonia, the walled kingdom, was founded by (TBN); in its early days, it was simply known as Citadelon in honor of Auophilon. ==== Establishment of settlements in, on, and beyond the Grand Ocean ==== TBA: [[Skystone]], [[Terahaven]], [[Blackshore]] ==== Destruction of Auophilon ==== TBA ==== Founding of New Pokopoko, Mudwater, and Gorgondel ==== TBA === Within official materials === Most events in the Uncharted Space beyond this point are are chronicled through each [[Movement]]. ==== ''Movement I: Heavenly Beast'' ==== {{Hatnote|Also see the dedicated page for [[Heavenly Beast]].}} TBA; royal knights find and slay the heaven dragon, several locations are introduced and established ==== ''Movement II: A Wicked Storm Comes'' ==== {{Hatnote|Also see the dedicated page for [[A Wicked Storm Comes]].}} TBA; introduction of the grand ocean and its inhabitants, possibly related to a deity or rus or something idk ==== ''Movement III: Repentance Fugue'' ==== {{Hatnote|Also see the dedicated page for [[Repentance Fugue]].}} TBA; qhephion? ==== ''Movement IV: On a Scale From 1 to 10'' ==== {{Hatnote|Also see the dedicated page for [[On a Scale From 1 to 10]].}} TBA; bunjeecorp? or hydra? or both? not entirely sure Movement V: === WIthin post-canon materials === TBA === Within dubiously-canon materials === TBA == Spatial characteristics == As do all Spaces, Uncharted Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Uncharted Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present. === Traits === # [[Souls]] are a very prominent part of the Uncharted Space for a variety of reasons (depending on the area). # [[Kineticism]] is much more prevalent here than in other parts of Vast Space, and it is more common to know some form of it, or at least to be capable of learning it. === Laws === # All laws of the Vast Space also apply to the Uncharted Space whenever possible. # There is a "known world" (Light Side) and an "unknown world" (Dark Side). The Light Side is continuously expanding, but there isn't a consistently proven way to speed it up or slow it down, let alone know which direction it will majorly expand in next. # The Dark Side is unsafe to enter or be near. There have been attempts to enter and explore it, but no adventurers are known to have returned. == Trivia == * As of January 2023, the Uncharted Space is the largest thing in the Vast Space to have been inspired by a dream. * The Uncharted Space is the second subsection of Vast Space to have ever been referred to as a Zone. ** The first Zone was the [[Calamity Zone]], which is now of dubious canon. == Related pages == * [[Calamity Zone]] [[Category:Uncharted Space]] [[Category:Spaces]] [[Category:Stubs]] ed44868848f83a6d358221cde5bff96e6e8cbdf6 696 653 2023-05-27T01:30:52Z BEELETH 2 wikitext text/x-wiki {{Stub}}{{Infobox|above=Uncharted Space|header1=Creation and development|label2=Development|data2=TBA|label3=Creator(s)|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Uncharted Zone|label6=Guardian(s)|data6=None}} The '''Uncharted Space''', originally referred to as the '''Uncharted Zone''', is a [[Space]] contained within [[Vast Space]]. There is no [[major deity]] associated with it. == Creation and development == In October of 2021, [[BEELETH]] had a dream in which they explored a then-non-existent character universe referred to as the Uncharted Zone. The basis of what they could remember of the dream's plot ended up becoming part of a new Space's lore. == In-universe history == The Uncharted Space is presumably a byproduct of [[Origin]]'s existence, as most things in the entirety of the Vast Space can be traced back to him. It was formed over time out of loose [[ichor]] into a distinct universe that is subject to several inexplicable rules (as most Spaces are). === Early history === The first parts of the Uncharted Space to take form in the [[Light Side]] are in [[Auophilon]], the former home of the Auophian people; it was situated on a peninsula surrounded by the Grand Ocean on three sides, and an unnamed forest on the other side. Guardians of elements and ideas, the [[Auophian pantheon]], made their first physical appearances around this time. As Auophilon developed, [[kineticism]] also became more prevalent. Though it was initially feared, it came to be known as generally good and allowed for communication with and rituals in honor of the deities the Auophian people revered. The only form of kineticm that was outright forbidden out of fear of misuse was [[alchemy]], which was practiced by some in secret. Some Auophians left their homeland in search of new land and resources, and the first long-term establishment became [[Citadelonia]]. Due to the immense distance between these [[locations]], communication was not feasible and Auophilon was slowly forgotten by those who left it. ==== Founding of Citadelonia ==== Citadelonia, the walled kingdom, was founded by (TBN); in its early days, it was simply known as Citadelon in honor of Auophilon. ==== Establishment of settlements in, on, and beyond the Grand Ocean ==== TBA: [[Skystone]], [[Terahaven]], [[Blackshore]] ==== Destruction of Auophilon ==== TBA ==== Founding of Old Pokopoko, Mudwater, and Gorgondel ==== TBA ==== Technologization of Old Pokopoko and Gorgondel ==== TBA, remember to address space travel, the dark side, and intercity connection === Within official materials === Most events in the Uncharted Space beyond this point are are chronicled through each [[Movement]]. ==== ''Movement I: Heavenly Beast'' ==== {{Hatnote|Also see the dedicated page for [[Heavenly Beast]].}} TBA; royal knights find and slay the heaven dragon, several locations are introduced and established ==== ''Movement II: A Wicked Storm Comes'' ==== {{Hatnote|Also see the dedicated page for [[A Wicked Storm Comes]].}} TBA; introduction of the grand ocean and its inhabitants, possibly related to a deity or rus or something idk ==== ''Movement III: Repentance Fugue'' ==== {{Hatnote|Also see the dedicated page for [[Repentance Fugue]].}} TBA; qhephion? ==== ''Movement IV: On a Scale From 1 to 10'' ==== {{Hatnote|Also see the dedicated page for [[On a Scale From 1 to 10]].}} TBA; bunjeecorp? or hydra? or both? not entirely sure Movement V: === WIthin post-canon materials === TBA === Within dubiously-canon materials === TBA == Spatial characteristics == As do all Spaces, Uncharted Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Uncharted Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present. === Traits === # [[Souls]] are a very prominent part of the Uncharted Space for a variety of reasons (depending on the area). # [[Kineticism]] is much more prevalent here than in other parts of Vast Space, and it is more common to know some form of it, or at least to be capable of learning it. === Laws === # All laws of the Vast Space also apply to the Uncharted Space whenever possible. # There is a "known world" (Light Side) and an "unknown world" (Dark Side). The Light Side is continuously expanding, but there isn't a consistently proven way to speed it up or slow it down, let alone know which direction it will majorly expand in next. # The Dark Side is unsafe to enter or be near. There have been attempts to enter and explore it, but no adventurers are known to have returned. == Trivia == * As of January 2023, the Uncharted Space is the largest thing in the Vast Space to have been inspired by a dream. * The Uncharted Space is the second subsection of Vast Space to have ever been referred to as a Zone. ** The first Zone was the [[Calamity Zone]], which is now of dubious canon. == Related pages == * [[Calamity Zone]] [[Category:Uncharted Space]] [[Category:Spaces]] [[Category:Stubs]] faa908a28134f5b2bd1296db6f8f1b255be3d51e Halberd (character) 0 166 655 607 2023-04-27T20:57:28Z BEELETH 2 wikitext text/x-wiki {{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}} {{Hatnote|Not to be confused with [[BEELETH]].}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al * Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. He is not canon to [[Vast Space]]. ==Personality== [[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]] As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky. He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly. Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling. ==Appearance== By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. ===Other design notes=== Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. *His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". *He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. **Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. **As long as he isn't doing a lot of walking, he's fine with shorter shorts too. *Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. *In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves. *His eye color is brown. ==Creation and development== [[File:Men.png|alt=A cartoony, low-quality drawing of Halberd staring vacantly into the distance. In a floating thought bubble coming from his head is the text "Men (heart symbol)" followed by "and women" in smaller text.|thumb|149x149px|Things have certainly changed]] His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. In February 2023, he began being drawn with a more simple, shape-y design on occasion. ==Abilities== Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. #'''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #*As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God. ==Gallery== {{Hatnote|[[Halberd_(character)/Gallery|Click here to see Halberd's full gallery.]]}} ===Recognized palettes === <gallery> File:Halwhite.png|"White hair" palette File:Halbrown.png|"Brown hair" palette </gallery> ===Reference images === TBA ==Trivia== *His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. **These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men. **A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. *BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. ===Name origin === Halberds are a type of weapon, and BEEL likes weapon names. Freezerays are also weapons. White as a surname is a reference to a voice line from Toontown Online spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. However, he is not really a doctor. ==Related pages== *[[BEELETH]], Hal's real-world counterpart *[[BEELETH's sona]], another representation of BEELETH [[Category:Sonas]] [[Category:Characters]] [[Category:LGBT+ characters]] [[Category:Non-canon]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]] [[Category:Stubs]] 3984c817f763483b4d0faadb7a728e439ed94a5f 668 655 2023-05-25T18:18:57Z BEELETH 2 Updated to use "non-canon" template wikitext text/x-wiki {{Noncanon}} {{Hatnote|Not to be confused with [[BEELETH]].}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al * Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. He is not canon to [[Vast Space]]. ==Personality== [[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]] As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky. He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly. Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling. ==Appearance== By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. === Other design notes=== Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. *His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". *He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. **Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. **As long as he isn't doing a lot of walking, he's fine with shorter shorts too. * Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. *In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves. *His eye color is brown. == Creation and development== [[File:Men.png|alt=A cartoony, low-quality drawing of Halberd staring vacantly into the distance. In a floating thought bubble coming from his head is the text "Men (heart symbol)" followed by "and women" in smaller text.|thumb|149x149px|Things have certainly changed]] His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. In February 2023, he began being drawn with a more simple, shape-y design on occasion. ==Abilities== Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. #'''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #*As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God. ==Gallery== {{Hatnote|[[Halberd_(character)/Gallery|Click here to see Halberd's full gallery.]]}} ===Recognized palettes === <gallery> File:Halwhite.png|"White hair" palette File:Halbrown.png|"Brown hair" palette </gallery> ===Reference images=== TBA ==Trivia== *His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. ** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men. **A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. *BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. ===Name origin=== Halberds are a type of weapon, and BEEL likes weapon names. Freezerays are also weapons. White as a surname is a reference to a voice line from Toontown Online spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. However, he is not really a doctor. ==Related pages == *[[BEELETH]], Hal's real-world counterpart *[[BEELETH's sona]], another representation of BEELETH [[Category:Sonas]] [[Category:Characters]] [[Category:LGBT+ characters]] [[Category:Non-canon]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]] [[Category:Stubs]] 25c6b520db76c36ccb1820d097e38403813cb4bb 673 668 2023-05-25T18:23:56Z BEELETH 2 wikitext text/x-wiki {{Noncanon}} {{Hatnote|Not to be confused with [[BEELETH]].}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al * Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. He is not canon to [[Vast Space]]. ==Personality== [[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]] As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky. He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly. Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling. ==Appearance== By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. === Other design notes=== Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. *His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". *He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. **Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. **As long as he isn't doing a lot of walking, he's fine with shorter shorts too. * Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. *In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves. *His eye color is brown. == Creation and development== [[File:Men.png|alt=A cartoony, low-quality drawing of Halberd staring vacantly into the distance. In a floating thought bubble coming from his head is the text "Men (heart symbol)" followed by "and women" in smaller text.|thumb|149x149px|Things have certainly changed]] His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. In February 2023, he began being drawn with a more simple, shape-y design on occasion. ==Abilities== Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. #'''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #*As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God. ==Gallery== {{Hatnote|[[Halberd_(character)/Gallery|Click here to see Halberd's full gallery.]]}} ===Recognized palettes === <gallery> File:Halwhite.png|"White hair" palette File:Halbrown.png|"Brown hair" palette </gallery> ===Reference images=== TBA ==Trivia== *His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. ** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men. **A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. *BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. ===Name origin=== Halberds are a type of weapon, and BEEL likes weapon names. White as a surname is a reference to a voice line from Toontown Online spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. However, he is not really a doctor. ==Related pages == *[[BEELETH]], Hal's real-world counterpart *[[BEELETH's sona]], another representation of BEELETH [[Category:Sonas]] [[Category:Characters]] [[Category:LGBT+ characters]] [[Category:Non-canon]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]] [[Category:Stubs]] 7544d2e1df15a0b20e4696e395057599eb298894 676 673 2023-05-25T22:32:33Z BEELETH 2 fixed format + templates wikitext text/x-wiki {{Hatnote|Not to be confused with [[BEELETH]].}}{{Noncanon}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created) * January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al * Hal * Halb * Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him * they/them * it/its * no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then. He is not canon to [[Vast Space]]. ==Personality== [[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]] As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky. He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly. Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling. ==Appearance== By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway. His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork. === Other design notes=== Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. *His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb". *He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine. **Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home. **As long as he isn't doing a lot of walking, he's fine with shorter shorts too. * Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is. *In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves. *His eye color is brown. == Creation and development== [[File:Men.png|alt=A cartoony, low-quality drawing of Halberd staring vacantly into the distance. In a floating thought bubble coming from his head is the text "Men (heart symbol)" followed by "and women" in smaller text.|thumb|149x149px|Things have certainly changed]] His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name). His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them. In February 2023, he began being drawn with a more simple, shape-y design on occasion. ==Abilities== Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously. #'''Becoming/being something else:''' Hal has been drawn as non-humans in the past. #*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown. #*As well as this, he has been drawn as a [[cute cat]] as a joke. #'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God. ==Gallery== {{Hatnote|[[Halberd_(character)/Gallery|Click here to see Halberd's full gallery.]]}} ===Recognized palettes === <gallery> File:Halwhite.png|"White hair" palette File:Halbrown.png|"Brown hair" palette </gallery> ===Reference images=== TBA ==Trivia== *His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion. ** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men. **A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name. *BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing. ===Name origin=== Halberds are a type of weapon, and BEEL likes weapon names. White as a surname is a reference to a voice line from Toontown Online spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. However, he is not really a doctor. ==Related pages == *[[BEELETH]], Hal's real-world counterpart *[[BEELETH's sona]], another representation of BEELETH [[Category:Sonas]] [[Category:Characters]] [[Category:LGBT+ characters]] [[Category:Non-canon]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]] [[Category:Stubs]] 28f50d8413ddf1b49edc3923d6b1b972e5834640 BEELETH 0 149 656 610 2023-05-18T21:00:20Z BEELETH 2 wikitext text/x-wiki {{Mbox|text=This [[non-canon]] page of a [[real person]] exists on the wiki because this person is a community member, content creator, and/or important person in the [[Vast Space]]'s real-world community. Please be respectful when editing this page.|name=realperson}}{{Infobox|above=BEELETH|data5=Autosexual, aromantic, polyamorous|data8=TBA|data7=TBA|label9=Offsite links|label8=Playlist|label7=Theme song|header6=Extra information|caption=Self-portrait|label5=Orientation|image=[[File:Beelethcreatura.png|200px|High-quality, astounding artistic rendition of BEELETH]]|data4=* they/them * he/him * it/its * no pronouns|label4=Pronouns|data3=Epicene, intersex, femboy, bear, androgyne|label3=Genders and labels|data2=* BEELETH (BEEL) * HALBERD (AL, HAL, HALB, HALBY, etc.) * URINALBEAST (YUUBI)|label2=Other names|header1=About this person|data9=TBA}}<small>''Not to be confused with [[Halberd (character)|Halberd]] or [[Beeleth]].''</small> '''BEELETH''' (professionally known as '''HALBERD ASWANG''') is the real-world creator of the Vast Space, and is the main contributor to its lore and canon. They are also the creator of this wiki, and their user page can be accessed [[User:BEELETH|here]]. Their name is not always required to be written in all-capital letters, but it is preferred whenever possible or convenient. Though they use multiple sets of pronouns, this article exclusively refers to them with they/them for consistency. == Contributions to Vast Space == === General categories === * [[:Category:Created by BEELETH|Category:Created by BEELETH]] * [[:Category:Designed by BEELETH|Category:Designed by BEELETH]] === Specific === * Creator of the [[Vast Space]] and most canon media set within it ** Founder and bureaucrat of the Vast Space Wiki == Links == These pages are able to be used to find more first-hand information about BEELETH as well as their characters. * [https://beeleth.carrd.co/ Carrd] *[https://discord.gg/r9ZwNhV4rx Discord] * [https://www.roblox.com/users/30627566/profile Roblox] * [https://toyhou.se/BEELETH Toyhouse] * [https://twitter.com/itsbeeleth Twitter] == Related pages == * [[Beeleth]], a character who shares BEELETH's name and serves as a sona on occasion * [[Halberd]], an idealized representation of BEEL's future self * [[C.C.]], a character who BEEL once shared a name with [[Category:Real]] [[Category:Real people]] [[Category:Contributors]] [[Category:Humans]] c6fe18905c2de386d6d452f74f0e8812942af52a 680 656 2023-05-25T23:09:30Z BEELETH 2 wikitext text/x-wiki {{Realperson}}{{Hatnote|Not to be confused with [[Beeleth]] or [[Halberd]].}}{{Infobox|above=BEELETH|data5=Autosexual, aromantic, polyamorous|data8=TBA|data7=TBA|label9=Offsite links|label8=Playlist|label7=Theme song|header6=Extra information|caption=Self-portrait|label5=Orientation|image=[[File:Beelethcreatura.png|200px|High-quality, astounding artistic rendition of BEELETH]]|data4=* they/them * he/him * it/its * no pronouns|label4=Pronouns|data3=Epicene, intersex, femboy, bear, androgyne|label3=Genders and labels|data2=* BEELETH (BEEL) * HALBERD (AL, HAL, HALB, HALBY, etc.) * URINALBEAST (YUUBI)|label2=Other names|header1=About this person|data9=TBA}}'''BEELETH''' (professionally known as '''HALBERD ASWANG''') is the real-world creator of the Vast Space, and is the main contributor to its lore and canon. They are also the creator of this wiki, and their user page can be accessed [[User:BEELETH|here]]. Their name is not always required to be written in all-capital letters, but it is preferred whenever possible or convenient. Though they use multiple sets of pronouns, this article exclusively refers to them with they/them for consistency. == Contributions to Vast Space == === General categories === * [[:Category:Created by BEELETH|Category:Created by BEELETH]] * [[:Category:Designed by BEELETH|Category:Designed by BEELETH]] === Specific === * Creator of the [[Vast Space]] and most canon media set within it ** Founder and bureaucrat of the Vast Space Wiki == Links == These pages are able to be used to find more first-hand information about BEELETH as well as their characters. * [https://beeleth.carrd.co/ Carrd] *[https://discord.gg/r9ZwNhV4rx Discord] * [https://www.roblox.com/users/30627566/profile Roblox] * [https://toyhou.se/BEELETH Toyhouse] * [https://twitter.com/itsbeeleth Twitter] == Related pages == * [[Beeleth]], a character who shares BEELETH's name and serves as a sona on occasion * [[Halberd]], an idealized representation of BEEL's future self * [[C.C.]], a character who BEEL once shared a name with [[Category:Real]] [[Category:Real people]] [[Category:Contributors]] [[Category:Humans]] c7b4ba7ce4cc979615d48220f9c6b8acc6bf730e 681 680 2023-05-25T23:09:55Z BEELETH 2 wikitext text/x-wiki {{Hatnote|Not to be confused with [[Beeleth]] or [[Halberd]].}}{{Realperson}} {{Infobox|above=BEELETH|data5=Autosexual, aromantic, polyamorous|data8=TBA|data7=TBA|label9=Offsite links|label8=Playlist|label7=Theme song|header6=Extra information|caption=Self-portrait|label5=Orientation|image=[[File:Beelethcreatura.png|200px|High-quality, astounding artistic rendition of BEELETH]]|data4=* they/them * he/him * it/its * no pronouns|label4=Pronouns|data3=Epicene, intersex, femboy, bear, androgyne|label3=Genders and labels|data2=* BEELETH (BEEL) * HALBERD (AL, HAL, HALB, HALBY, etc.) * URINALBEAST (YUUBI)|label2=Other names|header1=About this person|data9=TBA}}'''BEELETH''' (professionally known as '''HALBERD ASWANG''') is the real-world creator of the Vast Space, and is the main contributor to its lore and canon. They are also the creator of this wiki, and their user page can be accessed [[User:BEELETH|here]]. Their name is not always required to be written in all-capital letters, but it is preferred whenever possible or convenient. Though they use multiple sets of pronouns, this article exclusively refers to them with they/them for consistency. == Contributions to Vast Space == === General categories === * [[:Category:Created by BEELETH|Category:Created by BEELETH]] * [[:Category:Designed by BEELETH|Category:Designed by BEELETH]] === Specific === * Creator of the [[Vast Space]] and most canon media set within it ** Founder and bureaucrat of the Vast Space Wiki == Links == These pages are able to be used to find more first-hand information about BEELETH as well as their characters. * [https://beeleth.carrd.co/ Carrd] *[https://discord.gg/r9ZwNhV4rx Discord] * [https://www.roblox.com/users/30627566/profile Roblox] * [https://toyhou.se/BEELETH Toyhouse] * [https://twitter.com/itsbeeleth Twitter] == Related pages == * [[Beeleth]], a character who shares BEELETH's name and serves as a sona on occasion * [[Halberd]], an idealized representation of BEEL's future self * [[C.C.]], a character who BEEL once shared a name with [[Category:Real]] [[Category:Real people]] [[Category:Contributors]] [[Category:Humans]] 3689daf6afc64ea1a9fe3d87acbb64211f30596c Halberd White 0 329 657 2023-05-18T21:01:34Z BEELETH 2 Redirected page to [[Halberd (character)]] wikitext text/x-wiki #REDIRECT [[Halberd (character)]] 5e902739d24145f68919d8abf3e238aeeddd2b5f Halberd Aswang 0 330 658 2023-05-18T21:02:08Z BEELETH 2 Redirected page to [[BEELETH]] wikitext text/x-wiki #REDIRECT [[BEELETH]] 9f55d880f723ab38e660baa68964e7484ce01ae9 Category:Drakes 14 331 663 2023-05-23T20:50:30Z BEELETH 2 Created page with "A list of [[drakes]] throughout [[Vast Space]]. In the [[Uncharted Space]], drakes are a type of wingless, reptilian [[beastman]] that is included in the [[draconic hierarchy]], generally as royal attendants and soldiers to [[dragons]]. This definition may vary in other parts of Vast Space." wikitext text/x-wiki A list of [[drakes]] throughout [[Vast Space]]. In the [[Uncharted Space]], drakes are a type of wingless, reptilian [[beastman]] that is included in the [[draconic hierarchy]], generally as royal attendants and soldiers to [[dragons]]. This definition may vary in other parts of Vast Space. 0daefbc3f364f879267b0b73cba34b735e577d3a 664 663 2023-05-23T20:51:34Z BEELETH 2 wikitext text/x-wiki A list of [[drakes]] throughout [[Vast Space]]. In the [[Uncharted Space]], drakes are a type of wingless, reptilian [[beastman]] that is included in the [[draconic hierarchy]], generally as royal attendants and soldiers to [[dragons]]. This definition may vary in other parts of Vast Space. [[Category:Beastmen]] [[Category:Draconic hierarchy]] cea9bf7d0549db8db3b2cc4e5389151f9722e066 Anvil 0 310 665 608 2023-05-23T22:08:08Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Anvil|caption=Design as of 2022|image=[[File:Placeholder.png|200px|Placeholder]]|header1=Creation and development|label2=Development|data2=* June 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Unconfirmed|data6=* Cursed Knight of Endless Ruin * Anvil * Ruin|label6=Other names|label7=Genders and labels|data7=Unconfirmed gender (neutral)|label8=Pronouns|data8=* he/him * she/her * they/them (occasionally)|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Beastman]] ([[drake]])|header11=Plot information|label12=Space|data12=[[Uncharted Space]]}} The '''Cursed Knight of Endless Ruin''', also referred to with the names '''Anvil''' and '''Ruin''' (the former being his usual name in canon media), is a [[beastman]] knight of uncertain origin. He is one of the only people to openly use [[alchemy]] despite it being outlawed in many parts of the [[Uncharted Space]], utilizing his exposed [[soul]] and any other souls he can absorb. Though Anvil uses multiple sets of pronouns, this article solely refers to him with he/him pronouns for consistency purposes. == Personality == He is initially introduced as a heartless, villainous knight. If someone was weaker than him, he would either consider them prey or totally disregard them. === Post- === After his defeat, he is portrayed more like a kind but strong protector. TBA == Appearance == Anvil has multiple forms. === Normal form === In normal situations, Anvil appears as a [[drake]] with medium-length white fur. His fur is longer around his neck, along his goat-like ears, and the end of his long, reptilian tail. He has two golden horns on either side of his head; they are slightly bent into an L-like shape. His eyes are typically colored as red or green, though this is purely for situational aesthetics. Parts of his soul may be externally exposed, particularly from the sides and back of his neck as well as on the outer-facing sides of each of his paws. It appears as glowy, green, and fire-like, but it is generally safe to touch for those who do not have weak or exposed souls (as stronger souls resist the natural pull). The intensity, color, heat, glow, and size are partially controllable and may also be influenced by the amount of power Anvil has in a given moment. His signature iron armor does not cover his entire body, but instead just his upper half save for his paws. He may, on occasion, don a helmet that obscures nearly his entire face aside from a pair of glowing eyes and sharp teeth. The sides of his helmet are horned, and the top has a candle with a flame that matches the color of his soul. ==== Other design notes ==== He can be portrayed in any palette as well as with some variation of his armor (if any), but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * By default, he is drawn with the colors described above. However, he has been portrayed with a pink palette and a "kaiju" palette. * A younger design of his normal form was created at some point. In this design, he walks on all four paws and lacks an externally exposed soul. His eyes are drawn simper and his horns are shorter and do not bend. * The pads on each of his paws are optional to draw. * His lower paws are to always be portrayed as paws (or at least stumps in more stylized or "cute" art), but his upper paws can be portrayed as fin-like, paw-like, or finger-like (in a stubby way to not be too uncanny). His hand claws are optional, but must be implied by the shape or details of his paws. === Bestial form === When Anvil absorbs lots of souls/energy or enters a rage state, he takes on a more monstrous version of his normal form. ==== Other design notes ==== * TBA == Creation and development == Anvil was originally created by [[BEELETH]] in Robloxian High School early in June 2022 as a helmet-wearing beast knight with countless arms and flames emerging from various parts of his body. == In-universe history == TBA == Abilities == Anvil is an exceptionally strong beastman on a physical level, and also has innate and immense kinetic/alchemic ability and potential partially derived from his curse. # '''Manipulating his soul as well as others' souls:''' TBA # '''Wielding the Golden Hammer of Endless Ruin:''' TBA # '''Using immense physical strength:''' TBA # '''Using various forms of kineticism:''' TBA #* Pyrokineticism #* Alchemy # == Gallery == ''<small>[[Anvil/Gallery|Click here to see Anvil's full gallery.]]</small>'' ===Recognized palettes=== TBA ===Reference images=== TBA == Trivia == * Despite originally being created with a helmet, it almost never appears in any portrayal of Anvil in any media. === Name origin === Anvil derives his name from a metalworking tool associated with blacksmiths despite not being a blacksmith himself; however, anvils are typically used with hammers in the blacksmithing process, and Anvil wields a large hammer. == Related pages == * [[Forge]], another beastman with a similar name * [[Nym of the Lake]], another knight occasionally referred to as the Cursed Knight [[Category:Beastmen]] [[Category:Uncharted Space]] [[Category:Stubs]] [[Category:Characters]] [[Category:Drakes]] e1db899221c52b2c5aa72c2c8f1a39dc57aaed2e 688 665 2023-05-26T23:11:37Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Anvil|caption=Default design as of 2022|image=[[File:Anvil2.png|200px|Default Anvil]]|header1=Creation and development|label2=Development|data2=* June 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Unconfirmed|data6=* Cursed Knight of Endless Ruin * Anvil * Ruin|label6=Other names|label7=Genders and labels|data7=Unconfirmed gender (neutral)|label8=Pronouns|data8=* he/him * she/her * they/them (occasionally)|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Beastman]] ([[drake]])|header11=Plot information|label12=Space|data12=[[Uncharted Space]]}} The '''Cursed Knight of Endless Ruin''', also referred to with the names '''Anvil''' and '''Ruin''' (the former being his usual name in canon media), is a [[beastman]] knight of uncertain origin. He is one of the only people to openly use [[alchemy]] despite it being outlawed in many parts of the [[Uncharted Space]], utilizing his exposed [[soul]] and any other souls he can absorb. Though Anvil uses multiple sets of pronouns, this article solely refers to him with he/him pronouns for consistency purposes. == Personality == He is initially introduced as a heartless, villainous knight. If someone was weaker than him, he would either consider them prey or totally disregard them. === section === After his defeat, he is portrayed more like a kind but strong protector. TBA == Appearance == Anvil has multiple forms. === Normal form === In normal situations, Anvil appears as a [[drake]] with medium-length white fur. His fur is longer around his neck, along his goat-like ears, and the end of his long, reptilian tail. He has two golden horns on either side of his head; they are slightly bent into an L-like shape. His eyes are typically colored as red or green, though this is purely for situational aesthetics. Parts of his soul may be externally exposed, particularly from the sides and back of his neck as well as on the outer-facing sides of each of his paws. It appears as glowy, green, and fire-like, but it is generally safe to touch for those who do not have weak or exposed souls (as stronger souls resist the natural pull). The intensity, color, heat, glow, and size are partially controllable and may also be influenced by the amount of power Anvil has in a given moment. His signature iron armor does not cover his entire body, but instead just his upper half save for his paws. He may, on occasion, don a helmet that obscures nearly his entire face aside from a pair of glowing eyes and sharp teeth. The sides of his helmet are horned, and the top has a candle with a flame that matches the color of his soul. ==== Other design notes ==== He can be portrayed in any palette as well as with some variation of his armor (if any), but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * By default, he is drawn with the colors described above. However, he has been portrayed with a pink palette and a "kaiju" palette. * A younger design of his normal form was created at some point. In this design, he walks on all four paws and lacks an externally exposed soul. His eyes are drawn simper and his horns are shorter and do not bend. * The pads on each of his paws are optional to draw. * His lower paws are to always be portrayed as paws (or at least stumps in more stylized or "cute" art), but his upper paws can be portrayed as fin-like, paw-like, or finger-like (in a stubby way to not be too uncanny). His hand claws are optional, but must be implied by the shape or details of his paws. === Bestial form === When Anvil absorbs lots of souls/energy or enters a rage state, he takes on a more monstrous version of his normal form. ==== Other design notes ==== * TBA == Creation and development == Anvil was originally created by [[BEELETH]] in Robloxian High School early in June 2022 as a helmet-wearing beast knight with countless arms and flames emerging from various parts of his body. == In-universe history == TBA == Abilities == Anvil is an exceptionally strong beastman on a physical level, and also has innate and immense kinetic/alchemic ability and potential partially derived from his curse. # '''Manipulating his soul as well as others' souls:''' TBA # '''Wielding the Golden Hammer of Endless Ruin:''' TBA # '''Using immense physical strength:''' TBA # '''Using various forms of kineticism:''' TBA #* Pyrokineticism #* Alchemy # == Gallery == ''<small>[[Anvil/Gallery|Click here to see Anvil's full gallery.]]</small>'' note to self: do something about condensing this while also including all forms, palettes, and variants ===Recognized palettes=== <gallery> File:Anvil2.png|"Default" palette </gallery> ===Reference images=== TBA === Free bases === <gallery caption="Commercial use of these bases or any derivatives is prohibited. Please do not remove the watermarks."> File:Anvil1base.png|Without fire File:Anvil2base.png|With fire </gallery> == Trivia == * Despite originally being created with a helmet, it almost never appears in any portrayal of Anvil in any media. === Name origin === Anvil derives his name from a metalworking tool associated with blacksmiths despite not being a blacksmith himself; however, anvils are typically used with hammers in the blacksmithing process, and Anvil wields a large hammer. == Related pages == * [[Forge]], another beastman with a similar name * [[Nym of the Lake]], another knight occasionally referred to as the Cursed Knight [[Category:Beastmen]] [[Category:Uncharted Space]] [[Category:Stubs]] [[Category:Characters]] [[Category:Drakes]] e0815df5e4b7b147966c12d698b00cb076f3b405 Template:Noncanon 10 332 666 2023-05-25T18:16:24Z BEELETH 2 Created page with "{{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}" wikitext text/x-wiki {{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}} ccca1e1fdce3e1a9d82ce14f9552e41ead0808cc 667 666 2023-05-25T18:18:26Z BEELETH 2 Added category wikitext text/x-wiki <noinclude>{{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}</noinclude> <includeonly>[[Category:Non-canon]]</includeonly> 9abaf364e1f464bb9824700b715dad192d1385c1 669 667 2023-05-25T18:20:34Z BEELETH 2 fix? wikitext text/x-wiki {{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}[[Category:Non-canon]] 834097652fd4dbcf02f28633f3aebfcd1c062afb 670 669 2023-05-25T18:21:29Z BEELETH 2 wikitext text/x-wiki {{Mbox|name=noncanon|text=This <includeonly>[[non-canon]]</includeonly> page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}} 6f6a51941e1a9734e63c6ef6d4ceafc4e36e80f3 671 670 2023-05-25T18:21:53Z BEELETH 2 wikitext text/x-wiki {{Mbox|name=noncanon|text=This <noinclude>[[non-canon]]</noinclude> page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}} 78ab555566cc19c8a792d69c5206ff8aa43a436f 672 671 2023-05-25T18:23:13Z BEELETH 2 fix??? wikitext text/x-wiki {{Mbox|name=noncanon|text=This [[Category:Non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}} 88d8c2ca9f0b7f752e73c32626fa360c4f093feb 675 672 2023-05-25T22:30:21Z BEELETH 2 wikitext text/x-wiki {{Mbox|name=noncanon|text=[[Category:Non-canon]]This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}} 288c0cd68482b572e401542cb5dc0673bbd1f0b3 677 675 2023-05-25T22:33:11Z BEELETH 2 wikitext text/x-wiki <br>{{Mbox|name=noncanon|text=[[Category:Non-canon]]This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}<br> 0c28a0a588d20ec17f140ce6d786fd1a0ef11bf2 Origin 0 295 674 611 2023-05-25T22:28:28Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=Origin|image=[[File:Origin2.png|200px|Origin]]|header1=Creation and development|label2=Development|data2=* November 2020 (created) * January 2023 (redesigned)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Unconfirmed|label6=Other names|data6=* Origin * Rykha'uophi-konu}} '''Origin''', known as '''Rykha'uophi-konu''' by the [[Auophian]] [[eyes]], is the [[deity]] who reigns over the [[Vast Space]] as a whole. Most everything within the Vast Space can be traced back to him in some way; because of this, he is considered to be the creator of everything that did not simply will itself into existence. In relation to the [[Auophian pantheon]], he is considered the primary creation deity. It is important to note that most other beings anywhere in the Vast Space, regardless of whether or not they are deities, are unaware of Origin's existence unless they have the [[sorrowful gaze]]. [[Abstract]] is often mistaken by those with less gazing ability to be the primary creation deity, as he also has the ability to create from [[ichor]] and is closer to all other [[Spaces]] than Origin is. == Personality == It is hard to discern what kind of personality Origin has, as he is too large and powerful to be accessibly interacted with by most individuals, let alone comprehended. === Voice === Origin does not speak, but rather perpetually emits sound comparable to whalesong, humans weeping, windchimes, and metallic dragging all at once. This is commonly referred to as him "growling". In the virtually impossible scenario he is to feel threatened in any way, he will "roar", in which he will vocalize a deafening noise best described as billions of humans and creatures shrieking and crying all at once. == Appearance == By default, Origin appears as an incomprehensibly large monster with characteristics somewhat comparable to a variety of animals. The majority of his body's surface is bioluminescent or reflectant to some extent. A star-like object known as the [[Origin point]] floats above his head between his antlers. === Biology and physical function === Past the thick but almost perfectly clear membrane that protects his internal organs, [[Origin ichor]] flows freely. His innards are also able to move around to an extent, as there is not much holding them in place; in fact, he sheds his organs regularly to grow them once more. Everything he expels from his body becomes a part of space and is imbued with a fraction of his power. The function of each of his organs is not entirely known, but they can all be observed from outside his body. * The cloud body is large, white organ (or possibly an organ system) that can visually be compared to the trim of a fur coat, though it has cloud-like properties hence the name. It is largest around his neck-area and the lower part of his body, but trails around the front of his body along the edge between the inside and outside of his membrane. The organ is partially exposed externally, and it is constantly shedding thin layers that follow behind Origin as he moves throughout Vast Space. These layers become nebulae when they are fully separated from him. ** This can be considered a reproductive organ, as greater spatial deities have the potential to be created from nebulae. * Throughout his body are small, pink pockets and glands full of [[godsorrow]]; this is the second type of ichor only Origin is known to produce. The two godsorrow glands at the base of his tails are where the majority of his body's godsorrow is generated, and he is able to expel it through his stingers if he chooses. Some large drops of godsorrow float around his upper cloud body, tail godskulls, and antlers. His skeletal structure is much less intricate than his specialized organs, and he noticeably lacks a lot of the bones that organic beings often have. * His cranial [[godskull]], unlike other Auophian deities, is completely dark. The "spine" that drapes loosely below his head is made of the same type of dark godskull. * There are no bones in the rest of his body save for the ovular godskulls on his tails, the pincers on the tail ends, and the forseps below them. * They are not considered to be connected to his body, but at least eight empty godskulls surround him at all times. He is able to drop them if he pleases, but he always replaces the one he discards. == Creation and development == Origin was initially created in late 2020 to be a sort of "higher power" over the other deities. He was later redesigned and rewritten in early 2023. == In-universe history == It can be assumed that Origin was either created at the same time as the Vast Space or he predates it == Abilities == # '''Being immortal:''' TBA # '''Generating ichor:''' Many greater deities have the ability to generate ichor, and Origin, for the most part, is no different. The only difference is that he is the source of two types of unique ichors, each with special abilities that most other ichors cannot recreate. #* '''Origin ichor''' is the most plentiful type of ichor produced by Origin, and is considered to be the more important type; without it, Origin would likely be the only thing to exist throughout Vast Space (and even then, it's uncertain if he could function without it at all). After it is processed by his cloud-like organ system, it is later shed alongside some layers of the outermost parts of the organs to allow fresher, healthier ichor and tissue to regenerate. The byproduct will often react to its environment and transform into something new. #* '''Godsorrow''', on the other hand, is produced at a lesser rate and serves a less definitive purpose for Origin as well as for anything around him. It has varying effects on organisms depending on how it is used or consumed. As with most types of ichor, it is poisonous so one must be careful when handling it. #** Godsorrow has a sweet, perfume-like flavor and scent. #** If godsorrow is spread lightly over one's eyelids and allowed to dry, it has a high chance of fatally poisoning them and a low chance of granting them the sorrowful gaze. This practice was generally only used in Auophilon for those training to become eyes as a final test in their training. It is uncertain what exactly allows one to obtain the gaze from this. #** In alchemy, #** # '''Generating godskull:''' TBA # == Gallery == === Recognized palettes === <gallery widths="120" heights="60"> File:Origin2.png|Default palette </gallery> === Reference images === TBA == Trivia == * Origin is the only deity to reign over a Space that does not contain its associated deity's name in its title. * He is also the only deity known to produce two types of ichor. * Despite existing prior to Abstract in canon, he was created as a character ''after'' him. === Name origins === He is often referred to as Origin because he was the first being to exist in the Vast Space and likely created it. His Auophian name, Rykha'uophi-konu, can be translated from the Auophian language as "the cherished blooming-one beyond us". Rykhaa means "cherished", and as it is followed by another "a" sound, it is combined into an "a-stop". Auophi can be interpreted as "blooming-one" but is generally left untranslated in most contexts as it is the civilization's name, and a more accurate, albeit rougher, translation of the word would be "person of flowers". The Auophian deities are often referred to as fellow Auophian people, albeit with a higher rank and higher reverance. The -konu suffix is an honorific reserved only for certain deities that reside beyond [[Light side|the known world]], and Origin shares this honorific with Abstract. == Related pages == * [[Vast Space]] [[Category:Characters]] [[Category:Vast Space]] [[Category:Deities]] [[Category:Greater deities]] [[Category:Stubs]] [[Category:Designed by BEELETH]] [[Category:Created by BEELETH]] d86466975628ba9c9423d0c15e67cb0f3647e962 683 674 2023-05-25T23:16:19Z BEELETH 2 wikitext text/x-wiki {{Spoilerpage}}{{Infobox|above=Origin|image=[[File:Origin2.png|200px|Origin]]|header1=Creation and development|label2=Development|data2=* November 2020 (created) * January 2023 (redesigned)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Unconfirmed|label6=Other names|data6=* Origin * Rykha'uophi-konu}} '''Origin''', known as '''Rykha'uophi-konu''' by the [[Auophian]] [[eyes]], is the [[deity]] who reigns over the [[Vast Space]] as a whole. Most everything within the Vast Space can be traced back to him in some way; because of this, he is considered to be the creator of everything that did not simply will itself into existence. In relation to the [[Auophian pantheon]], he is considered the primary creation deity. It is important to note that most other beings anywhere in the Vast Space, regardless of whether or not they are deities, are unaware of Origin's existence unless they have the [[sorrowful gaze]]. [[Abstract]] is often mistaken by those with less gazing ability to be the primary creation deity, as he also has the ability to create from [[ichor]] and is closer to all other [[Spaces]] than Origin is. == Personality == It is hard to discern what kind of personality Origin has, as he is too large and powerful to be accessibly interacted with by most individuals, let alone comprehended. === Voice === Origin does not speak, but rather perpetually emits sound comparable to whalesong, humans weeping, windchimes, and metallic dragging all at once. This is commonly referred to as him "growling". In the virtually impossible scenario he is to feel threatened in any way, he will "roar", in which he will vocalize a deafening noise best described as billions of humans and creatures shrieking and crying all at once. == Appearance == By default, Origin appears as an incomprehensibly large monster with characteristics somewhat comparable to a variety of animals. The majority of his body's surface is bioluminescent or reflectant to some extent. A star-like object known as the [[Origin point]] floats above his head between his antlers. === Biology and physical function === Past the thick but almost perfectly clear membrane that protects his internal organs, [[Origin ichor]] flows freely. His innards are also able to move around to an extent, as there is not much holding them in place; in fact, he sheds his organs regularly to grow them once more. Everything he expels from his body becomes a part of space and is imbued with a fraction of his power. The function of each of his organs is not entirely known, but they can all be observed from outside his body. * The cloud body is large, white organ (or possibly an organ system) that can visually be compared to the trim of a fur coat, though it has cloud-like properties hence the name. It is largest around his neck-area and the lower part of his body, but trails around the front of his body along the edge between the inside and outside of his membrane. The organ is partially exposed externally, and it is constantly shedding thin layers that follow behind Origin as he moves throughout Vast Space. These layers become nebulae when they are fully separated from him. ** This can be considered a reproductive organ, as greater spatial deities have the potential to be created from nebulae. * Throughout his body are small, pink pockets and glands full of [[godsorrow]]; this is the second type of ichor only Origin is known to produce. The two godsorrow glands at the base of his tails are where the majority of his body's godsorrow is generated, and he is able to expel it through his stingers if he chooses. Some large drops of godsorrow float around his upper cloud body, tail godskulls, and antlers. His skeletal structure is much less intricate than his specialized organs, and he noticeably lacks a lot of the bones that organic beings often have. * His cranial [[godskull]], unlike other Auophian deities, is completely dark. The "spine" that drapes loosely below his head is made of the same type of dark godskull. * There are no bones in the rest of his body save for the ovular godskulls on his tails, the pincers on the tail ends, and the forseps below them. * They are not considered to be connected to his body, but at least eight empty godskulls surround him at all times. He is able to drop them if he pleases, but he always replaces the one he discards. == Creation and development == Origin was initially created in late 2020 to be a sort of "higher power" over the other deities. He was later redesigned and rewritten in early 2023. == In-universe history == It can be assumed that Origin was either created at the same time as the Vast Space or he predates it == Abilities == # '''Being immortal:''' TBA # '''Generating ichor:''' Many greater deities have the ability to generate ichor, and Origin, for the most part, is no different. The only difference is that he is the source of two types of unique ichors, each with special abilities that most other ichors cannot recreate. #* '''Origin ichor''' is the most plentiful type of ichor produced by Origin, and is considered to be the more important type; without it, Origin would likely be the only thing to exist throughout Vast Space (and even then, it's uncertain if he could function without it at all). After it is processed by his cloud-like organ system, it is later shed alongside some layers of the outermost parts of the organs to allow fresher, healthier ichor and tissue to regenerate. The byproduct will often react to its environment and transform into something new. #* '''Godsorrow''', on the other hand, is produced at a lesser rate and serves a less definitive purpose for Origin as well as for anything around him. It has varying effects on organisms depending on how it is used or consumed. As with most types of ichor, it is poisonous so one must be careful when handling it. #** Godsorrow has a sweet, perfume-like flavor and scent. #** If godsorrow is spread lightly over one's eyelids and allowed to dry, it has a high chance of fatally poisoning them and a low chance of granting them the sorrowful gaze. This practice was generally only used in Auophilon for those training to become eyes as a final test in their training. It is uncertain what exactly allows one to obtain the gaze from this. #** In alchemy, #** # '''Generating godskull:''' TBA # == Gallery == === Recognized palettes === <gallery widths="120" heights="60"> File:Origin2.png|Default palette </gallery> === Reference images === TBA == Trivia == * Origin is the only deity to reign over a Space that does not contain its associated deity's name in its title. * He is also the only deity known to produce two types of ichor. * Despite existing prior to Abstract in canon, he was created as a character ''after'' him. === Name origins === He is often referred to as Origin because he was the first being to exist in the Vast Space and likely created it. His Auophian name, Rykha'uophi-konu, can be translated from the Auophian language as "the cherished blooming-one beyond us". Rykhaa means "cherished", and as it is followed by another "a" sound, it is combined into an "a-stop". Auophi can be interpreted as "blooming-one" but is generally left untranslated in most contexts as it is the civilization's name, and a more accurate, albeit rougher, translation of the word would be "person of flowers". The Auophian deities are often referred to as fellow Auophian people, albeit with a higher rank and higher reverance. The -konu suffix is an honorific reserved only for certain deities that reside beyond [[Light side|the known world]], and Origin shares this honorific with Abstract. == Related pages == * [[Vast Space]] [[Category:Characters]] [[Category:Vast Space]] [[Category:Deities]] [[Category:Greater deities]] [[Category:Stubs]] [[Category:Designed by BEELETH]] [[Category:Created by BEELETH]] b3f79d073d2cc6b9f7e7a2e0b8d74cd3bc02beef Template:Realperson 10 333 678 2023-05-25T23:07:06Z BEELETH 2 Created page with "<br>{{Mbox|text=This [[Category:Non-canon]] [[non-canon]] page of a [[Category:Real people]][[real person]] exists on the wiki because this person is a community member, content creator, and/or important person in the [[Vast Space]]'s real-world community. Please be respectful when editing this page.|name=realperson}}<br>" wikitext text/x-wiki <br>{{Mbox|text=This [[Category:Non-canon]] [[non-canon]] page of a [[Category:Real people]][[real person]] exists on the wiki because this person is a community member, content creator, and/or important person in the [[Vast Space]]'s real-world community. Please be respectful when editing this page.|name=realperson}}<br> d7c6f7f9203937603f32ff2bb66ef38149a7fa7f 679 678 2023-05-25T23:07:20Z BEELETH 2 wikitext text/x-wiki <br>{{Mbox|text=This [[Category:Non-canon]] [[non-canon]] page of a [[Category:Real people]] [[real person]] exists on the wiki because this person is a community member, content creator, and/or important person in the [[Vast Space]]'s real-world community. Please be respectful when editing this page.|name=realperson}}<br> aa240770ee836cd0914f04516a80b4214531d9ba Template:Spoilerpage 10 334 682 2023-05-25T23:14:27Z BEELETH 2 Created page with "<br>{{Mbox|text=This page contains unmarked [[spoilers]] for content in [[Vast Space]]. If this is unwanted, please leave this page.|name=spoilers}}<br>" wikitext text/x-wiki <br>{{Mbox|text=This page contains unmarked [[spoilers]] for content in [[Vast Space]]. If this is unwanted, please leave this page.|name=spoilers}}<br> 59111d4edcd00fdce276eeef7156036878afb056 File:Anvil2.png 6 335 684 2023-05-26T22:38:56Z BEELETH 2 Uploaded own work with UploadWizard wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{clc|1=help why is this description marked as chilcotin}} |date=2023-05-26 |source={{own}} |author=[[User:BEELETH|BEELETH]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} fa0b40ae19e181a45a54247be1e905b4a505ac13 File:Anvil1base.png 6 336 685 2023-05-26T22:38:56Z BEELETH 2 Uploaded own work with UploadWizard wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{clc|1=help why is this description marked as chilcotin}} |date=2023-05-26 |source={{own}} |author=[[User:BEELETH|BEELETH]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} fa0b40ae19e181a45a54247be1e905b4a505ac13 699 685 2023-05-29T18:30:53Z BEELETH 2 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{clc|1=help why is this description marked as chilcotin}} |date=2023-05-26 |source={{own}} |author=[[User:BEELETH|BEELETH]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} [[Category:Bases]] [[Category:Art by BEELETH]] 9b2c61c224f9ab2a02165fa40880c61b4e912f68 File:Anvil1.png 6 337 686 2023-05-26T22:38:58Z BEELETH 2 Uploaded own work with UploadWizard wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{clc|1=help why is this description marked as chilcotin}} |date=2023-05-26 |source={{own}} |author=[[User:BEELETH|BEELETH]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} fa0b40ae19e181a45a54247be1e905b4a505ac13 File:Anvil2base.png 6 338 687 2023-05-26T22:38:59Z BEELETH 2 Uploaded own work with UploadWizard wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{clc|1=help why is this description marked as chilcotin}} |date=2023-05-26 |source={{own}} |author=[[User:BEELETH|BEELETH]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} fa0b40ae19e181a45a54247be1e905b4a505ac13 700 687 2023-05-29T18:31:26Z BEELETH 2 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{clc|1=help why is this description marked as chilcotin}} |date=2023-05-26 |source={{own}} |author=[[User:BEELETH|BEELETH]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} [[Category:Bases]] [[Category:Art by BEELETH]] 9b2c61c224f9ab2a02165fa40880c61b4e912f68 Drake 0 339 689 2023-05-26T23:12:11Z BEELETH 2 Redirected page to [[Drakes]] wikitext text/x-wiki #REDIRECT [[Drakes]] 4733e2d7711174fac0b3b07995b4c993449c6d02 Template:Stub 10 102 690 203 2023-05-26T23:17:49Z BEELETH 2 wikitext text/x-wiki <br>{{Mbox|text = ''This article is a [[:Category:Stubs|stub]]. You can help {{SITENAME}} by [{{fullurl:{{FULLPAGENAME}}|action=edit}} expanding it].''|class = notice hidden plainlinks|id = stub }}<br><includeonly>[[Category:Stubs]]</includeonly><noinclude> {{Documentation}}</noinclude> b6eaf8615ff1fc56bbc70153db338adefd1b6971 692 690 2023-05-26T23:19:07Z BEELETH 2 wikitext text/x-wiki <br>{{Mbox|text = ''This article is a [[:Category:Stubs|stub]]. You can help our wiki by [{{fullurl:{{FULLPAGENAME}}|action=edit}} expanding it].''|name=stub }}<br><includeonly>[[Category:Stubs]]</includeonly><noinclude> {{Documentation}}</noinclude> 27c8f196247671b66c537933d4fff02219714d9d 693 692 2023-05-26T23:19:48Z BEELETH 2 wikitext text/x-wiki <br>{{Mbox|text = ''This article is a [[:Category:Stubs|stub]]. Please consider helping our wiki by [{{fullurl:{{FULLPAGENAME}}|action=edit}} expanding it].''|name=stub }}<br><includeonly>[[Category:Stubs]]</includeonly><noinclude> {{Documentation}}</noinclude> 2e61138270f564ae5e463c45e5d9b0581a29a671 Vast Space 0 247 691 568 2023-05-26T23:17:57Z BEELETH 2 wikitext text/x-wiki {{Hatnote|Did you mean the [[BEELETH_Wiki|main page]]?}}{{Stub}}{{Infobox|above=Vast Space|header1=Creation and development|label2=Development|label3=Creator(s)|data2=Unknown|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Beelethverse * The Multiverse * Everything|label6=Guardian(s)|data6=* [[Origin]] (creator/deity) * [[Cosmic Warden]] (protector)|label7=Sub-Spaces, universes, and timelines|data7=* [[Abstract Space]] * [[Sender Space]] * [[Uncharted Space]] * [[Anomaly Space]] * [[World's End Timeline]] * Several smaller, obscure Spaces}} '''Vast Space''' (also occasionally called the '''Beelethverse''' outside of canon materials) is the place in which all canon or theoretical events occur in [[BEELETH]]'s shared character multiverse. It is overseen by [[Origin]] and at least one [[Cosmic Warden]]; this [[Space]] is split into several smaller Spaces with their own [[deities]], sub-properties, and/or sub-laws. == Creation and development == The Vast Space has existed for as long as the character universe had been split into smaller Spaces, but was not given a name nor recognized for several years. == In-universe history == It is uncertain when the Vast Space was created, but for as long as it has existed, Origin has protected it. == Spatial characteristics == As do all Spaces, Vast Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Vast Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present. === Traits === # Not all of the Vast Space's sub-Spaces need to be created by a deity or an event; some are just naturally created. # Most Spaces and their contained universes have preset outcomes ("timelines"), but if they do not, it is likely the result of a [[spatial anomaly]] of some sort. #* [[World's End Timeline]] is a "Schrodinger's timeline" where [[Sir Ves]]' [[parasite]] gains the means to rewrite the entirety of Vast Space into a single, ruined version that combines a handful of Space elements that survive the event. #* Galfleet Heaven was originally intended to have two outcomes as a result of Volta, who was created as an angel-like villain at the time rather than as a soul-based entity as it exists in the Uncharted Space. # Spaces and their contained universes tend to constantly be occurring in the past, present, and future; they are endlessly "playing", "rewinding", and are also "paused". Time exists incomprehensibly across them and happens at what feels like its own convenience. # Most Spaces and their contained universes are unable to communicate across one another, but there have been exceptions resulting from spatial anomalies or certain natural conditions. # Humans usually exist at some point in each universe, but this is not always the case. === Laws === # Nothing is allowed to exist beyond Vast Space unless it is even more incomprehensibly vast or powerful. This is almost certainly impossible. #* Semi-canon crossovers are permitted if the other universe(s) are explained as being obscure, alternate timelines that diverge at the very beginning of the Vast Space's existence. # All worlds contained in the Vast Space must have the [[Great Gobbler]] and his most notable historical event present in some way. #* He does not have to be human. # The [[Auophian pantheon]], best described as the descendants of Origin, naturally have higher precedence over most other deities. #* Amongst themselves, Origin is the highest-ranked deity, with Abstract second to him. The rest of the pantheon is ranked below Abstract and are equal to one another unless they are demigods, in which they are ranked below them but above average people. #* Abstract is the highest-ranked deity of a sub-Space. The rest of the pantheon are the highest-ranked deities within any universe. # Logical/literal memories are stored in minds, and emotional/implied memories are stored in souls. Logical people have stronger minds, and emotional people have stronger souls. # Living things, regardless of whether they are organic or artificial, normally have minds. Souls, on the other hand, only naturally occur in organic living things. # Loose souls will usually gravitate towards empty or partial vessels, or they will gravitate towards more powerful souls in order to fuse with them. In the event a soul fuses, == Trivia == * The Vast Space is the only deity-protected Space whose name does not reflect that of its associated deity. == Related pages == TBA [[Category:Vast Space]] [[Category:Spaces]] 7e78ee5ef9327570199a83da528b7508160b1004 File:Pokopoko.png 6 340 694 2023-05-26T23:28:05Z BEELETH 2 An unfinished May 2023 drawing by BEELETH of the cityscape of New Pokopoko at night. wikitext text/x-wiki == Summary == An unfinished May 2023 drawing by BEELETH of the cityscape of New Pokopoko at night. 76c453b3fb12996fb25e7d99299bb598ae2676cd New Pokopoko 0 286 695 618 2023-05-27T01:21:13Z BEELETH 2 wikitext text/x-wiki {{Stub}}{{Infobox|above=New Pokopoko|header1=Creation and development|label2=Development|data2=November 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Location information|caption=[[BEELETH]]'s concept art from May 2023|image=[[File:Pokopoko.png|200px|New Pokopoko cityscape at night]]|label5=Space|data5=[[Uncharted Space]]|label6=Region|data6=[[Light side]], main continent|label7=Districts|data7=* District 1 * District 2 * District 3 * District 4 * District 5 <b>Total population:</b> At least 1|label8=Demonym|data8=New Pokopokan|label9=Currency|data9=Eleanor (1 USD = 10 EL)}} '''New Pokopoko''', rarely (but still known to be) referred to solely as '''Pokopoko''', is a populous, bustling city in the [[Light Side]] of the [[Uncharted Space]]. Aside from the advanced technology and countless companies, celebrities, and hotspots in its walls, the city most notably serves as the home of [[Bunjeecorp]]'s largest terrestrial headquarters. It was built over [[Old Pokopoko]]. It is the sister city of [[Gorgondel]], and the two cities share technology and business with each other. They are also two of the easiest non-adjacent [[locations]] in Uncharted Space to travel between, as intercity travel is made more convenient and accelerated with Bunjeecorp and [[HYDRA]]'s [[OPTRASYS|Optimized Transport System]]. It was originally only used for the transport of material, goods, militia, and important figures, but was later expanded to be for the general population once the infrastructure was fully expanded. It only takes about 20 to 30 minutes to travel between the cities despite their distance; however, in the extremely rare occasion of a traffic jam, travel could potentially take hours. == Creation and development == Initially, New Pokopoko was created in November 2022 as a one-off location during an AI Dungeon session set in the Uncharted Space. Many locations, characters, and events from the session were used as inspiration for [[Heavenly Beast|''Heavenly Beast'']]. optimistic dystopia == In-universe history == The [[location]] now known as New Pokopoko is one of the first known places in the Uncharted Space to enter the Light Side. Alchemists that were banished from [[Citadelonia]] or simply wished to practice alchemy in secret travelled northward, splitting into two similar yet distinct groups that would later found Old Pokopoko and Gorgondel. At least five years prior to ''Heavenly Beast'', Bunjeecorp gave the opportunity to a select few New Pokopokans to become cyborgs; two of these citizens were [[C.C.]] and [[Pollyanna]]. === ''Movement I: Heavenly Beast'' === Along with [[Remudon]] and [[Hypnosen]], the [[Circle of Royal Knights]] temporarily stops at New Pokopoko while hunting down the [[Heaven Dragon]]. They are personally greeted at the New Pokopoko Main Gate by [[Woolf]]. === ''Movement II: A Wicked Storm Comes'' === While New Pokopoko is not a major location during ''[[A Wicked Storm Comes]]'', certain events do occur at the same time as the story. (ill add them later im very tired of writing an article about a fictional city on and off) == Geography == Before it fully developed, New Pokopoko stood atop a flat, rocky plateau with little vegetation. === Major areas and districts === TBA ==== New Pokopoko Main Gate ==== Though there are other gates to the city, the Main Gate is the most popular and well-known, accessible to those coming from the South or those who are leaving the city. It resembles a theme park's gates, and usually has greeters available to visitors at all times of the day; these greeters may be robotic, holographic, or organic. It often is not patrolled by live militia, instead being monitored by machinery and cameras unless there is an emergency of some sort. ==== Rainbow roads ==== The "rainbow roads" of New Pokopoko are the busiest streets in the city. They are heavily marketed to tourists and are often elaborately decorated, even moreso than the rest of the city's streets and buildings. ==== Orbits ==== Due to the unique architecture and technology of New Pokopoko, orbits currently exist nowhere else in the Light Side, and there are only a few in the city at all. An orbit consists of several floating (free-floating or otherwise suspended) buildings, areas, or structures that slowly circle a larger hub platform in the center. Each of the floating platforms in the orbit may be openly accessible, or they may be sealed in a bubble-like, soundproof barrier only permeable via teleportation or other specialized transport. Orbits are most popular with the youth, but are sometimes utilized by those who seek privacy and unique scenery. === Architecture === New Pokopoko is physically walled off from the majority of its border and also is protected by an [[New Pokopoko alchemic barrier|invisible barrier]] that can be readily configured by some Bunjeecorp officials at any time with the use of alchemy and technology combined. This barrier also serves as a screen on which special messages can be projected, or a place for advertisements to be displayed at night alongside the stars. The walls of the city open at specific points in each cardinal direction. The Western wall is exclusively for Bunjeecorp use, as it is connected to a major terrestrial starship port overlooking the Gobu Canyon; it would be a security and safety threat if unauthorized individuals were able to freely access it. The Southern wall opens at two points, but the New Pokopoko Main Gate is the most used opening. The other southern opening is generally reserved for emergencies or for the local militia. Generally, the architecture of New Pokopoko is sleek and modern, utilizing both straight edges and curves to achieve a futuristic look. Many buildings and landmarks are white, blue, or transparent; it also isn't unusual for them to have color-changing parts or be able to reflect light in beautiful, creative ways. ==== Transportation ==== Though it's possible for the most part to walk from place to place, a lot of areas are only accessible through certain modes of transport. For example, some buildings are suspended in mid-air and must be accessed through [[insta-jumps]]. Some places also have tubes for people or specialized equipment to shoot through quickly, but this isn't very common due to how much space that the tubes can take up; they are, however, often more cost-effective to create and maintain than insta-jumps. The insta-jumps used throughout the city are generally paid for by the government, but will sometimes be owned by businesses or individuals who can afford them. Personal vehicles are very uncommon in New Pokopoko due to the reliability and often cheap prices of public transport options provided by the city or by some businesses. ===== Optimized Transport System (OPTRASYS) ===== <small>''See [[OPTRASYS]] for more information.''</small> OPTRASYS is a travel system jointly developed by Bunjeecorp and HYDRA. It allows for high-speed, nearly entirely automated safe travel between New Pokopoko and Gorgondel for both organic and inorganic matter. It was initially developed for private transport, but was later opened to the public after the NPCC realized the economic and social potential of tourism between the two cities and requested Bunjeecorp to expand the system. In order to legally board OPTRASYS, one must have a Bunjeecorp or HYDRA employee ID, a Gorgondel or New Pokopoko citizen ID, a tourist card, or a temporary OPTRASYS card on hand. Individuals who are not of the mature age of their species or are otherwise unable to travel on their own must travel with someone who is able to legally board OPTRASYS, regardless of whether or not the unable person has the correct cards for travel. === Industries and economy === TBA === Climate === Prior to New Pokopoko's development into a more modern city, the area's climate was arid and temperate. Nowadays, the weather is largely controlled by a semi-automated system jointly controlled by Bunjeecorp and the New Pokopoko City Council; the weather patterns and seasons are almost never extreme, and are based on the natural climate of non-desert regions of the Light Side. == Government == New Pokopoko is governed by the New Pokopoko City Council (NPCC), which is openly heavily influenced by Bunjeecorp; they almost completely singlehandedly fund the city government and provide for the city's infrastructure themselves, so they are often considered an extension of the NPCC. === Militia === TBA == Culture == TBA '''personal notes for later''' * figure out what everyones deal w unicorns is * how exactly does everyone feel about gorgondel anyway * do people actually like bunjeecorp * alchemy??? do people even know what it is here???? ** kineticism as a whole actually == Trivia == * New Pokopoko was conceptualized ''before'' Old Pokopoko, despite the name. === Name origin === The phrase "Pokopoko" is entirely meaningless outside of canon, and was chosen on a whim because of the sound. In canon, however, New Pokopoko derives its name from Old Pokopoko. == Related pages == * [[Gobu Canyon]], a nearby region * [[Gorgondel]], New Pokopoko's sister city * [[Old Pokopoko]], the past version of New Pokopoko [[Category:Locations]] [[Category:Uncharted Space]] [[Category:Locations in Uncharted Space]] [[Category:Stubs]] c367744af1c1c94b356c579d51e6f13399df091e Godskull 0 296 697 581 2023-05-27T02:52:11Z BEELETH 2 wikitext text/x-wiki {{Stub}}{{Infobox|above=Godskull}} '''Godskull''' is a type of [[material]] only naturally found in the skeletal structure of [[Auophian deities]]; each [[Deities|deity]] has a different type of godskull associated with them, but they are all often simply referred to as godskull unless it is important enough to make a distinction. Despite their name, godskulls do not exclusively refer to the cranial structure of the deities, but instead refer to all bone-like structures that exist in, on, or around them that are made of the same material. It is mainly prevalent in the [[Uncharted Space]], but is occasionally found in other places throughout [[Vast Space]]. == Properties == The visual characteristics and textures of godskull vary depending on which deity it is sourced from as well as what part of their body it originates from. An unused, empty cranial godskull will appear white and may have completely darkened sockets or openings. Auophian deities may spawn from empty godskulls, or may create their own as they spawn from [[Origin ichor]]. Regardless, they will often totally change the structure and properties of the godskull they adorn or contain. === Physical properties === In the [[Uncharted Space]], godskull is known by warriors, collectors, and anyone else with an eye for rare material for its astounding strength and anti-[[fae]] characteristics. It's nearly impossible to come by, however, due to the fact that most deities prefer to keep their skeleton intact and most do not have any reason to shed any of their godskull. Godskull is diamond-like in can only be cut by other godskull, so given its rarity, it is almost never reshaped from the condition it is found in. Instead, it is repurposed into whatever tool, adornment, or decoration its owner desires. It is also important to note that most cranial godskulls are much too large for a [[human]]-sized individual to wear, so it must be used creatively. This includes repurposing an empty godskull into a shelter, or allowing a monster or mount to use it as armor. ==== Usage against the fae ==== As the fae are often malevolent in nature, people often try to find means to slay or at least incapacitate them. Godskull is known to permanently damage corporeal fae if they are slashed or stabbed by the material. Wounds caused by these attacks will not ever heal and may allow fairy dust to escape the injured fae's body and decrease their strength. [[Alicorn]] is generally seen in more anti-fae weaponry, however, due to it being comparably more plentiful and easy to obtain (though this does not mean much). It also has similar effects to godskull, though it is more likely to break. === Kinetic properties === TBA ==== Alchemic properties ==== TBA == In-universe history == TBA == Trivia == * TBA === Name origin === The name of godskull is self-explanatory. It derives its name from the location in which it is often found in the skeletons of deities. == Related pages == * Alicorn * Fairy dust [[Category:Materials]] [[Category:Stubs]] 409f783f06606ff9b2cc88ced59e64c5a3e846ca Halberd 0 274 698 542 2023-05-29T16:38:01Z BEELETH 2 changed redirect wikitext text/x-wiki #REDIRECT [[Halberd (disambiguation)]] 97656244041cb6b1fc6e8b97d3ad177396ef560c Category:Characters 14 289 701 571 2023-06-13T17:30:34Z BEELETH 2 mascots real wikitext text/x-wiki On this wiki, characters are the people represented in stories that take place in stories that may or may not be canon to the Vast Space; they may be based on real people, or may be purely fictional. There are several types of characters as well, like [[sonas]] or [[mascots]]. 5450c0bab118c176058e8b40c8e9225b381cb4a9 702 701 2023-06-13T17:32:05Z BEELETH 2 forgot some stuff woops wikitext text/x-wiki On this wiki, characters are the people represented in stories, worlds, or concepts that may or may not be canon to the [[Vast Space]]; they may be based on real people, or may be purely fictional. There are several types of characters as well, like [[sonas]] or [[mascots]]. 41e680fd5cadc4ec8df245577bbdfc80239e8c5e Category:Vast Space 14 341 703 2023-06-13T17:33:51Z BEELETH 2 Created page with "The [[Vast Space]] encompasses everything that exists in-universe. [[Non-canon]] [[characters]] or media do not belong in this category." wikitext text/x-wiki The [[Vast Space]] encompasses everything that exists in-universe. [[Non-canon]] [[characters]] or media do not belong in this category. 40cbbd6ca523cfafaa48c937ece65be6df8900ac 704 703 2023-06-13T17:36:05Z BEELETH 2 wikitext text/x-wiki The [[Vast Space]] encompasses everything that exists in-universe. [[Non-canon]] [[characters]] or media do not belong in this category; as well as this, only things that exist directly below the Vast Space (if imagined as an organizational system) should be listed here. 1239f9cc0101f9979f2b437af377255b9ac53608 706 704 2023-06-13T17:38:37Z BEELETH 2 wikitext text/x-wiki The [[Vast Space]] encompasses everything that exists in-universe. [[Non-canon]] [[characters]] or media do not belong in this category; as well as this, only things that exist directly below the Vast Space (if imagined as an organizational system) should be listed here. [[Category:Spaces]] 37c231b5b1f122a130dcb401602932b04e5a0d78 Category:Abstract Space 14 342 705 2023-06-13T17:37:40Z BEELETH 2 Created page with "Placeholder text ashubogihagohiajsn please rephrase [[Vast Space]] category text [[Category:Vast Space]] [[Category:Spaces]]" wikitext text/x-wiki Placeholder text ashubogihagohiajsn please rephrase [[Vast Space]] category text [[Category:Vast Space]] [[Category:Spaces]] fb91f294e62e4f700ec511e136d4e05cbfeca534 Category:Wiki guides 14 343 707 2023-06-13T17:39:46Z BEELETH 2 Created page with "These are official guides regarding how the wiki is to be run and edited." wikitext text/x-wiki These are official guides regarding how the wiki is to be run and edited. 1df35cd2800e8b3e69d0304d6e55c1feb7ca5669 Guide:Canonicity 0 344 708 2023-06-13T20:15:37Z BEELETH 2 Created page with "{{Stub}} Every article or section regarding a story, character, location, concept, or any other possible thing within [[Vast Space]] is to be interpreted as [[canon]] unless visibly stated otherwise. This includes pages written or contributed to by users other than [[BEELETH]]. The wiki will count on its users to be responsible with what they choose to write, upload, or alter; any irresponsible behavior will not be tolerated. If something here exists outside or beyond..." wikitext text/x-wiki {{Stub}} Every article or section regarding a story, character, location, concept, or any other possible thing within [[Vast Space]] is to be interpreted as [[canon]] unless visibly stated otherwise. This includes pages written or contributed to by users other than [[BEELETH]]. The wiki will count on its users to be responsible with what they choose to write, upload, or alter; any irresponsible behavior will not be tolerated. If something here exists outside or beyond the Vast Space canon, it is also to be marked as non-canon. == Definitions == If you are unfamiliar with the terms "[[canon]]", "[[non-canon]]", and "[[dub-canon]]", there are pages and categories dedicated to the concepts. However, in simplest terms, they are as follows: * '''Canon''' means that the concept in question officially exists or is recognized to exist or take place in the main Vast Space timeline(s). ** All [[Spaces]] are canon, or at least dub-canon in certain cases (see last major bullet point). ** Examples of things that exist within Vast Space canon are [[Abstract]], [[New Pokopoko]], and [[Souls]]. * '''Non-canon''' means that the concept in question is not officially included in Vast Space canon. ** Anything that does not exist within Vast Space is considered non-canon. ** [[Real people]], real locations, and other real things are generally non-canon to Vast Space. *** There are some things that exist both in the real world and in Vast Space, but the Vast Space versions tend to be highly fictionalized compared to their real counterparts. The most notable example of this would be [[4Kids Entertainment]] in the [[Uncharted Space]] as opposed to [https://en.wikipedia.org/wiki/4Kids_Entertainment the defunct real-world company of the same name]. ** Examples of non-canon things are [[Halberd (character)|Halberd]], [[Ribbons]], [https://en.wikipedia.org/wiki/McDonald%27s McDonald's], and [https://en.wikipedia.org/wiki/Barack_Obama Barack Obama]. * '''Dubious canon''', also written as dub-canon, is anything that isn't exactly canon, but isn't non-canon either. ** Split timelines are to be considered dubious canon. *** Examples of these are the original split-timeline concept of [[Galfleet Heaven]] and the [[World's End Timeline]]. ** Things that are considered of dubious canon to Vast Space include the [[Calamity Zone]] and [[GOODBYE FAIRWELL]]. == How to indicate a page's canonicity == As pages are to be treated as canon unless stated otherwise, there is no need to attach a "canon" category or template to a page; this is unnecessary clutter. Instead, you must use the [[Template:Noncanon|non-canon template]] to indicate if a page is non-canon. There is also a [[Template:Dub-canon|dub-canon template]] that may be used. === In the visual editor === If you are unsure how to mark a page as something other than canon through the visual editor, please follow the steps below. # In the editor, look at the toolbar on the top of the article you are editing. # Click on the "Insert" button. # Under that option, click on "Template". # An interface with a search bar should appear. # After following these steps, the chosen template should appear on the article. You have successfully marked something's canonicity! ==== Additional notes ==== Do ''not'' manually add the non-canon or dub-canon categories to a page. It should also be clear you should not add a page to the canon category. When marking an entire page, please make sure the box explaining the status is at the very top of the page. On the other hand, when you're only marking a section of an article, please make sure the template is above any text to be marked as non-canon or dub-canon. === In the source editor === If you're editing the pages here with the source editor, I would assume you know what you're doing. If you don't know what you're doing, please just use the visual editor instead. I beg of you. == How to change a page's existing canonicity status == The topic of an article may have its canonicity status changed or revoked. The process of reflecting this in the article is quite simple. A page that has become canon must have its non-canon or dub-canon template at the start of the page removed. The associated categories will be removed alongside it, so it's not as difficult as it may seem. Previously canon pages that have since become non-canon or dub-canon are also simple to change. All you need to do is add the correct template. [[Category:Wiki guides]] 857ca64b3429b7c2f674635a37a6b8e576ca8e21 Anvil 0 310 709 688 2023-06-13T20:17:01Z BEELETH 2 wikitext text/x-wiki {{Stub}}{{Infobox|above=Anvil|caption=Default design as of 2022|image=[[File:Anvil2.png|200px|Default Anvil]]|header1=Creation and development|label2=Development|data2=* June 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Unconfirmed|data6=* Cursed Knight of Endless Ruin * Anvil * Ruin|label6=Other names|label7=Genders and labels|data7=Unconfirmed gender (neutral)|label8=Pronouns|data8=* he/him * she/her * they/them (occasionally)|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Beastman]] ([[drake]])|header11=Plot information|label12=Space|data12=[[Uncharted Space]]}} The '''Cursed Knight of Endless Ruin''', also referred to with the names '''Anvil''' and '''Ruin''' (the former being his usual name in canon media), is a [[beastman]] knight of uncertain origin. He is one of the only people to openly use [[alchemy]] despite it being outlawed in many parts of the [[Uncharted Space]], utilizing his exposed [[soul]] and any other souls he can absorb. Though Anvil uses multiple sets of pronouns, this article solely refers to him with he/him pronouns for consistency purposes. == Personality == He is initially introduced as a heartless, villainous knight. If someone was weaker than him, he would either consider them prey or totally disregard them. === section === After his defeat, he is portrayed more like a kind but strong protector. TBA == Appearance == Anvil has multiple forms. === Normal form === In normal situations, Anvil appears as a [[drake]] with medium-length white fur. His fur is longer around his neck, along his goat-like ears, and the end of his long, reptilian tail. He has two golden horns on either side of his head; they are slightly bent into an L-like shape. His eyes are typically colored as red or green, though this is purely for situational aesthetics. Parts of his soul may be externally exposed, particularly from the sides and back of his neck as well as on the outer-facing sides of each of his paws. It appears as glowy, green, and fire-like, but it is generally safe to touch for those who do not have weak or exposed souls (as stronger souls resist the natural pull). The intensity, color, heat, glow, and size are partially controllable and may also be influenced by the amount of power Anvil has in a given moment. His signature iron armor does not cover his entire body, but instead just his upper half save for his paws. He may, on occasion, don a helmet that obscures nearly his entire face aside from a pair of glowing eyes and sharp teeth. The sides of his helmet are horned, and the top has a candle with a flame that matches the color of his soul. ==== Other design notes ==== He can be portrayed in any palette as well as with some variation of his armor (if any), but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * By default, he is drawn with the colors described above. However, he has been portrayed with a pink palette and a "kaiju" palette. * A younger design of his normal form was created at some point. In this design, he walks on all four paws and lacks an externally exposed soul. His eyes are drawn simper and his horns are shorter and do not bend. * The pads on each of his paws are optional to draw. * His lower paws are to always be portrayed as paws (or at least stumps in more stylized or "cute" art), but his upper paws can be portrayed as fin-like, paw-like, or finger-like (in a stubby way to not be too uncanny). His hand claws are optional, but must be implied by the shape or details of his paws. === Bestial form === When Anvil absorbs lots of souls/energy or enters a rage state, he takes on a more monstrous version of his normal form. ==== Other design notes ==== * TBA == Creation and development == Anvil was originally created by [[BEELETH]] in Robloxian High School early in June 2022 as a helmet-wearing beast knight with countless arms and flames emerging from various parts of his body. Smaller, simpler versions of this avatar were created a little later on, and these became his typical form. Though he recieved artwork not too long after, it was not on-model and recieved little use. Sometime later in 2022, playable, editable versions of him were created in Manyland. Decorative plushies of small and large sizes based on him were also created; the small size version was also turned into an editable avatar. He finally recieved on-model artwork of his low power forms in late May 2023. == In-universe history == TBA == Abilities == Anvil is an exceptionally strong beastman on a physical level, and also has innate and immense kinetic/alchemic ability and [[Kinetic potential|potential]] partially derived from his [[curse]]. # '''Manipulating his soul as well as others' souls:''' Anvil is possibly one of the strongest soul-manipulators throughout Vast Space, especially when one keeps in mind that he is not a deity. His soul is overly large for his body, and ruptures from various points of his body ( # '''Wielding the Golden Hammer of Endless Ruin:''' He is the only known person capable of wielding his signature weapon. It is far too heavy for most others to lift, and seems attuned only to his touch. #* The Golden Hammer is # '''Using immense physical strength:''' A # '''Using various forms of kineticism:''' Beastmen tend to pick up on [[kineticism]] easier than many other species, and Anvil is no different; in fact, he is incredibly skilled with the forms of kineticism he practices most. It is uncertain how much of his curse feeds into his kinetic potential. #* [[Pyrokineticism]] is one of the more obvious forms of kineticism he can use, one can gather from his appearance. #* By using any nearby soul or just fragments of them, he is able to use [[alchemy]]. # == Gallery == ''<small>[[Anvil/Gallery|Click here to see Anvil's full gallery.]]</small>'' note to self: do something about condensing this while also including all forms, palettes, and variants ===Recognized palettes=== <gallery> File:Anvil2.png|"Default" palette </gallery> ===Reference images=== TBA === Free bases === <gallery caption="Commercial use of these bases or any derivatives is prohibited. Please do not remove the watermarks."> File:Anvil1base.png|Without fire File:Anvil2base.png|With fire </gallery> == Trivia == * Despite originally being created with a helmet, it almost never appears in any portrayal of Anvil in any media. * He has been described as a "dragon-thing", but is actually a drake. ** However, drakes are included in the [[draconic hierarchy]], so it isn't an inaccurate descriptor. === Name origin === Anvil derives his usual name from a metalworking tool associated with blacksmiths despite not being a blacksmith himself; however, anvils are typically used with hammers in the blacksmithing process, and Anvil wields a large hammer. As a nickname, Ruin comes from his longer title of "Cursed Knight of Ruin". == Related pages == * [[Forge]], another beastman with a similar name * [[Nym of the Lake]], another knight occasionally referred to as the Cursed Knight [[Category:Beastmen]] [[Category:Uncharted Space]] [[Category:Stubs]] [[Category:Characters]] [[Category:Drakes]] d5e82ed72db7b35a644a4ef163ff87713a2e058a Gravity 0 345 710 2023-06-20T22:22:37Z BEELETH 2 Created page with "{{Stub}}{{Noncanon}}{{Infobox|above=Gravity|image=[[File:Placeholder.png|200px|Placeholder text]]}} '''Gravity''' (also known as '''Yuu Chi''') is a [[land shark]]. They are not canon to [[Vast Space]]. == Personality == TBA == Appearance == TBA === Other design notes === TBA == Creation and development == TBA == In-universe history == TBA == Abilities == # TBA == Gallery == TBA == Trivia == * TBA === Name origin === TBA == Related pages == * [[Brillante]]..." wikitext text/x-wiki {{Stub}}{{Noncanon}}{{Infobox|above=Gravity|image=[[File:Placeholder.png|200px|Placeholder text]]}} '''Gravity''' (also known as '''Yuu Chi''') is a [[land shark]]. They are not canon to [[Vast Space]]. == Personality == TBA == Appearance == TBA === Other design notes === TBA == Creation and development == TBA == In-universe history == TBA == Abilities == # TBA == Gallery == TBA == Trivia == * TBA === Name origin === TBA == Related pages == * [[Brillante]] * [[Sender]] [[Category:Characters]] [[Category:Non-canon]] 55dd9ade4c4c029a3f586f4d41cdfc98934f7b43 712 710 2023-06-20T23:03:19Z BEELETH 2 wikitext text/x-wiki {{Stub}}{{Noncanon}}{{Infobox|above=Gravity|image=[[File:GravityShark.png|200px|Gravity in their typical outfit]]|caption=Design as of 2023|header1=Creation and development|label2=Development|data2=* TBA|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Yuu Chi|label6=Other names|data6=* Gravity * Grav (rarely)|label7=Genders and labels|data7=Agender|label8=Pronouns|data8=Any pronouns|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Land shark]]|header11=Extra information|label12=Theme song|data12=TBA|label13=Playlist|data13=TBA|data14=* TBA|label14=Offsite links}} '''Gravity''' (also known as '''Yuu Chi''') is a [[land shark]] who is occasionally used as [[BEELETH]]'s [[sona]]. They are not canon to [[Vast Space]]. == Personality == TBA == Appearance == TBA === Other design notes === TBA == Creation and development == TBA == In-universe history == TBA == Abilities == # TBA == Gallery == {{Hatnote|[[Gravity/Gallery|Click here to see Gravity's full gallery.]]}} === Recognized palettes === <gallery> File:GravityShark.png|"Sand" palette </gallery> === Reference images === TBA == Trivia == * TBA === Name origin === TBA == Related pages == * [[Brillante]] * [[Sender]] [[Category:Characters]] [[Category:Non-canon]] [[Category:Sonas]] 6f3cda595f61cc024c2dbe4aaa363e8887de9e3d 714 712 2023-06-22T21:42:55Z BEELETH 2 wikitext text/x-wiki {{Stub}}{{Noncanon}}{{Infobox|above=Gravity|image=[[File:GravityShark.png|200px|Gravity in their typical outfit]]|caption=Design as of 2023|header1=Creation and development|label2=Development|data2=* TBA|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Yuu Chi|label6=Other names|data6=* Gravity * Grav (rarely)|label7=Genders and labels|data7=Agender|label8=Pronouns|data8=Any pronouns|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Land shark]]|header11=Extra information|label12=Theme song|data12=TBA|label13=Playlist|data13=TBA|data14=* TBA|label14=Offsite links}} '''Gravity''' (also known as '''Yuu Chi''') is a [[land shark]] who is occasionally used as [[BEELETH]]'s [[sona]]. They are not canon to [[Vast Space]]. == Personality == They are known for their charismatic appeal, stylish fashion sense, and chaotic nature. They also dislike shoes immensely, and will go anywhere barefoot with no regards to the weather or the ground's texture. == Appearance == As most if not all land sharks do, Grav appears as an anthropomorphic shark-like [[furry]]. Their body is primarily a sandy, reddish-yellow color with brown stripes and warm, off-white countershading. Beneath their shaggy, shoulder-length hair are two down-turned eyes with a confident gaze. Their fangs are sharp and white, but they are generally drawn with a more stylized expression that does not show them. Their hand-paws always have their claws poking out, but the same cannot be said for their foot-paws. Their metacarpal pads are shaped like crescent moons, and each of their fingers and thumbs have rounded digital pads. All of these pads are a dark brown color. Their feet also follow a similar pattern, albeit with only three digits on each foot. In most instances, Gravity wears black baggy leather jeans, two silver belts, oversized spiky black armwarmers, a black bra, a black collar with a silver bell, and black goggles. === Other design notes === TBA == Creation and development == TBA == In-universe history == TBA == Abilities == # TBA == Gallery == {{Hatnote|[[Gravity/Gallery|Click here to see Gravity's full gallery.]]}} === Recognized palettes === <gallery> File:GravityShark.png|"Sand" palette </gallery> === Reference images === TBA == Trivia == * TBA === Name origin === TBA == Related pages == * [[Brillante]] * [[Sender]] [[Category:Characters]] [[Category:Non-canon]] [[Category:Sonas]] 03e622529325530f3afe34f975e5dcf17f4dd766 731 714 2023-11-14T02:20:40Z BEELETH 2 wikitext text/x-wiki {{Stub}}{{Noncanon}}{{Infobox|above=Gravity|image=[[File:GravityShark.png|200px|Gravity in their typical outfit]]|caption=Design as of 2023|header1=Creation and development|label2=Development|data2=* TBA|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Yuu Chi|label6=Other names|data6=* Gravity * Grav (rarely)|label7=Genders and labels|data7=Agender|label8=Pronouns|data8=Any pronouns|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Land shark]]|header11=Extra information|label12=Theme song|data12=TBA|label13=Playlist|data13=TBA|data14=* TBA|label14=Offsite links}} '''Gravity''' (also known as '''Yuu Chi''') is a [[land shark]] who was briefly used as [[BEELETH]]'s [[sona]]. They are not canon to [[Vast Space]]. == Personality == They are known for their charismatic appeal, stylish fashion sense, and chaotic nature. They also dislike shoes immensely, and will go anywhere barefoot with no regards to the weather or the ground's texture. == Appearance == As most if not all land sharks do, Grav appears as an anthropomorphic shark-like [[furry]]. Their body is primarily a sandy, reddish-yellow color with brown stripes and warm, off-white countershading. Beneath their shaggy, shoulder-length hair are two down-turned eyes with a confident gaze. Their fangs are sharp and white, but they are generally drawn with a more stylized expression that does not show them. Their hand-paws always have their claws poking out, but the same cannot be said for their foot-paws. Their metacarpal pads are shaped like crescent moons, and each of their fingers and thumbs have rounded digital pads. All of these pads are a dark brown color. Their feet also follow a similar pattern, albeit with only three digits on each foot. In most instances, Gravity wears black baggy leather jeans, two silver belts, oversized spiky black armwarmers, a black bra, a black collar with a silver bell, and black goggles. === Other design notes === TBA == Creation and development == TBA == In-universe history == TBA == Abilities == # TBA == Gallery == {{Hatnote|[[Gravity/Gallery|Click here to see Gravity's full gallery.]]}} === Recognized palettes === <gallery> File:GravityShark.png|"Sand" palette </gallery> === Reference images === TBA == Trivia == * TBA === Name origin === TBA == Related pages == * [[Brillante]] * [[Sender]] [[Category:Characters]] [[Category:Non-canon]] cb11009adfb7da4b6b7b04546ee4d3eeb8402bbb File:GravityShark.png 6 346 711 2023-06-20T22:35:53Z BEELETH 2 will the upload work if i put text here....... lets find out wikitext text/x-wiki == Summary == will the upload work if i put text here....... lets find out 4686c1f23cd0007aca6093b5dc2135a5057e8abf BEELETH 0 149 713 681 2023-06-21T22:23:20Z BEELETH 2 wikitext text/x-wiki {{Hatnote|Not to be confused with [[Beeleth]] or [[Halberd]].}}{{Realperson}} {{Infobox|above=BEELETH|data5=Autosexual, aromantic, polyamorous|data8=TBA|data7=TBA|label9=Offsite links|label8=Playlist|label7=Theme song|header6=Extra information|caption=Self-portrait|label5=Orientation|image=[[File:Beelethcreatura.png|200px|High-quality, astounding artistic rendition of BEELETH]]|data4=* he/him * they/them * it/its * no pronouns|label4=Pronouns|data3=Epicene, intersex, femboy, bear|label3=Genders and labels|data2=* BEELETH (BEEL) * HALBERD (AL, HAL, HALB, HALBY, etc.) * URINALBEAST (YUUBI)|label2=Other names|header1=About this person|data9=See [[BEELETH#Links|this section]]}}'''BEELETH''' (professionally known as '''HALBERD ASWANG''') is the real-world creator of the [[Vast Space]], and is the main contributor to its lore and [[canon]]. They are also the creator of this wiki, and their user page can be accessed [[User:BEELETH|here]]. Their name is not always required to be written in all-capital letters, but it is preferred whenever possible or convenient. Though they use multiple sets of pronouns, this article exclusively refers to them with he/him for consistency. == Contributions to Vast Space == === Contribution categories === * [[:Category:Created by BEELETH|Category:Created by BEELETH]] * [[:Category:Designed by BEELETH|Category:Designed by BEELETH]] * [[:Category:Written by BEELETH]] === General contributions === * Creator of the Vast Space and most canon media set within it ** Founder and bureaucrat of the Vast Space Wiki == Links == These pages are able to be used to find more first-hand information about BEELETH as well as his characters and universes. * [https://beeleth.carrd.co/ Personal Carrd] *[https://discord.gg/r9ZwNhV4rx Discord server] * [https://www.roblox.com/users/30627566/profile Roblox userpage] * [https://toyhou.se/BEELETH Toyhouse] * [https://kingbeeleth.tumblr.com/ Tumblr] * [https://twitter.com/itsbeeleth Twitter] == Related pages == * [[Beeleth]], a character who shares BEELETH's name and serves as a [[sona]] on occasion * [[Halberd]], an idealized representation of BEEL's future self * [[C.C.]], a character who BEEL once shared a name with [[Category:Real]] [[Category:Real people]] [[Category:Contributors]] [[Category:Humans]] feaf9aba7ab6e1a089615c510d1d6ba664932874 Duronn-ko'ku 0 347 715 2023-07-26T00:39:25Z BEELETH 2 redir wikitext text/x-wiki #REDIRECT [[Doronn-ko'ku]] a9237146491209dec989409298fb8e33d92bd0ec File:Doronnkoku.png 6 348 716 2023-07-26T00:51:04Z BEELETH 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Doronn-ko'ku 0 349 717 2023-07-26T01:06:30Z BEELETH 2 Created page with "{{Stub}}{{Infobox|above=Doronn-ko'ku|image=[[File:Doronnkoku.png|200px|Doronn-ko'ku facing forward]]|caption=Design as of 2023}} '''Doronn-ko'ku''' (sometimes spelled '''Duronn-ko'ku''') is a [[lesser deity]] in the [[Auophian pantheon]] who embodies lightning and spontaneity. It first appeared in the [[Uncharted Space]] alongside the fire deity [[I'pho-shunui-phi]], and the two were traditionally considered siblings by the [[Auophian people]]. == Personality == Like a..." wikitext text/x-wiki {{Stub}}{{Infobox|above=Doronn-ko'ku|image=[[File:Doronnkoku.png|200px|Doronn-ko'ku facing forward]]|caption=Design as of 2023}} '''Doronn-ko'ku''' (sometimes spelled '''Duronn-ko'ku''') is a [[lesser deity]] in the [[Auophian pantheon]] who embodies lightning and spontaneity. It first appeared in the [[Uncharted Space]] alongside the fire deity [[I'pho-shunui-phi]], and the two were traditionally considered siblings by the [[Auophian people]]. == Personality == Like a substantial portion of the other Auophian deities, Doronn-ko'ku does not speak out loud. == Appearance == Doronn-ko'ku's cranial [[godskull]] is off-white and almost perfectly spherical, with four eyeholes in in a diamond-like arrangement in the front. It is suspended in the air by an elongated body entirely made of bright blue electricity; the shape and physical characteristics of this energy can change depending on the deity's mood, but generally retain a similar structure. It can even retreat into its cranial godskull when threatened. Its "default" shape can be described as regal, with a crown-like burst of energy at the top of the uppermost section, two long whisker-like extensions, a double-split neck, and long coattail-like or arm-like extensions at the lowermost part of its body. Beneath this can be two (or more) dark blue feelers that can be used as legs on the ground or like tentacles when in the air. Doronn-ko'ku stands at around 30 feet tall in most instances, but it is capable of changing the size of its body (save for its cranial godskull) in certain situations. == Creation and development == TBA == In-universe history == TBA == Abilities == # TBA == Gallery == ''<small>[[Doronn-ko'ku/Gallery|Click here to see Doronn-ko'ku's full gallery.]]</small>'' === Recognized palettes === <gallery> File:Doronnkoku.png|Default palette </gallery> === Reference images === TBA == Trivia == * TBA === Name origins === Doronn-ko'ku's name is entirely derived from the sound of rumbling and clapping thunder. == Related pages == * TBA 34d02859456a2672b997ce5b25bb64d36cbdf62e 718 717 2023-07-26T02:46:24Z BEELETH 2 wikitext text/x-wiki {{Stub}}{{Infobox|above=Doronn-ko'ku|image=[[File:Doronnkoku.png|200px|Doronn-ko'ku facing forward]]|caption=Design as of 2023|header1=Creation and development}} '''Doronn-ko'ku''' (sometimes spelled '''Duronn-ko'ku''') is a [[lesser deity]] in the [[Auophian pantheon]] who embodies lightning and spontaneity. It first appeared in the [[Uncharted Space]] alongside the fire deity [[I'pho-shunui-phi]], and the two were traditionally considered siblings by the [[Auophian people]]. == Personality == Like a substantial portion of the other Auophian deities, Doronn-ko'ku does not speak [[mortal]] languages, so it's harder to determine what Doronn-ko'ku's personality is like as opposed to a verbally expressive deity. It is entirely neutral and does not seem to have any opinions of its own, but it participates in non-deity activities from time to time, presumably for what it considers "fun". It will interact with non-deities as well and will emit strange sounds and monotonous buzzing as a form of communication, even if others do not understand it. The Auophian deities can understand such forms of speech easily. On entirely random occasions, it will become aggressive and harm others, even if it was previously neutral or even friendly towards them. == Appearance == Doronn-ko'ku's cranial [[godskull]] is off-white and almost perfectly spherical, with four eyeholes in in a diamond-like arrangement in the front. It is suspended in the air by an elongated body entirely made of bright blue electricity; the shape and physical characteristics of this energy can change depending on the deity's mood, but generally retain a similar structure. It can even retreat into its cranial godskull when threatened. Its "default" shape can be described as regal, with a crown-like burst of energy at the top of the uppermost section, two long whisker-like extensions, a double-split neck, and long coattail-like or arm-like extensions at the lowermost part of its body. Beneath this can be two (or more) dark blue feelers that can be used as legs on the ground or like tentacles when in the air. Doronn-ko'ku stands at around 30 feet tall in most instances, but it is capable of changing the size of its body (save for its cranial godskull) in certain situations. == Creation and development == [[BEELETH]] created Doronn-ko'ku in July 2023 to fill the role of an electricity-based deity within Auophian mythos. Its creation was quickly followed by the creation of I'pho-shunui-phi. == In-universe history == TBA == Abilities == # TBA == Gallery == ''<small>[[Doronn-ko'ku/Gallery|Click here to see Doronn-ko'ku's full gallery.]]</small>'' === Recognized palettes === <gallery> File:Doronnkoku.png|Default palette </gallery> === Reference images === TBA == Trivia == * Doronn-ko'ku and I'pho-shunui-phi were designed by BEELETH at around the same time, but Doronn-ko'ku was designed first. === Name origins === Doronn-ko'ku's name is entirely derived from the sound of rumbling and clapping thunder. == Related pages == * TBA [[Category:Characters]] [[Category:Uncharted Space]] [[Category:Deities]] [[Category:Lesser deities]] [[Category:Auophian pantheon]] [[Category:Designed by BEELETH]] [[Category:Created by BEELETH]] 45d14744478fd07c15a4e5ede55b076d65aa01db Doronnkoku 0 350 719 2023-07-26T02:46:50Z BEELETH 2 Redirected page to [[Doronn-ko'ku]] wikitext text/x-wiki #REDIRECT [[Doronn-ko'ku]] a9237146491209dec989409298fb8e33d92bd0ec Duronnkoku 0 351 720 2023-07-26T02:47:14Z BEELETH 2 Redirected page to [[Doronn-ko'ku]] wikitext text/x-wiki #REDIRECT [[Doronn-ko'ku]] a9237146491209dec989409298fb8e33d92bd0ec The Portalkeeper 0 352 721 2023-07-31T00:09:33Z BEELETH 2 Created page with "{{Stub}}{{Infobox|above=The Portalkeeper|caption=Design as of 2023|image=[[File:Placeholder.png|200px|Placeholder]]}} The '''Portalkeeper''' is a [[drake]] [[beastman]] with the rare ability to create and maintain portals throughout the [[Uncharted Space]] and beyond. He considers himself royalty despite ruling over desolate ruins. [[Category:Characters]] [[Category:Beastmen]] [[Category:Uncharted Space]]" wikitext text/x-wiki {{Stub}}{{Infobox|above=The Portalkeeper|caption=Design as of 2023|image=[[File:Placeholder.png|200px|Placeholder]]}} The '''Portalkeeper''' is a [[drake]] [[beastman]] with the rare ability to create and maintain portals throughout the [[Uncharted Space]] and beyond. He considers himself royalty despite ruling over desolate ruins. [[Category:Characters]] [[Category:Beastmen]] [[Category:Uncharted Space]] 48ca3582410182c851c51f9bf2febb1e3455ad1c 740 721 2023-11-15T04:21:45Z BEELETH 2 wikitext text/x-wiki {{Stub}}{{Infobox|above=The Portalkeeper|caption=Design as of 2023|image=[[File:Placeholder.png|200px|Placeholder]]}} The '''Portalkeeper''' is a [[drake]] [[beastman]] with the rare ability to [[Kineticism|create and maintain portals]] throughout the [[Uncharted Space]] and beyond. He is also one of the only ascended drakes in history. Following the death of the [[Smoke Dragon]] and the abandonment of her kingdom, the Portalkeeper claimed her former territory and ascended to dragonhood. He considers himself draconic royalty despite not having anyone to rule over. == Personality == The Portalkeeper believes his life is luxurious and does whatever he wishes; he is also incredibly confident in himself and his abilities, and frequently shows off even when no one is around. On occasion, he is hot-headed, but he is generally laid-back (save for sudden bursts of energy). Stubbornness is one of his flaws. While he ''is'' powerful, he is still able to be intimidated by more powerful beings like true [[dragons]]. He will run away immediately if faced with an imminent, tangible threat. In the past, he was much more timid and soft-spoken. === Voice === TBA == Appearance == TBA == Creation and development == TBA == In-universe history == TBA == Connections == === Smoke Dragon === TBA === Soot Dragon === TBA === Anvil === TBA == Abilities == # TBA == Gallery == TBA == Trivia == * TBA === Name origin === TBA == Related pages == * TBA [[Category:Characters]] [[Category:Beastmen]] [[Category:Uncharted Space]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]] 5265b207b9db1db34d439b8dd1d327fa5a2f13a3 Portalkeeper 0 353 722 2023-07-31T00:10:05Z BEELETH 2 Redirected page to [[The Portalkeeper]] wikitext text/x-wiki #REDIRECT [[The Portalkeeper]] b5fa9808ff76a57b71db7111a7d73287fbc9bf3a File:Etude.png 6 354 723 2023-07-31T00:22:02Z BEELETH 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Etude 0 355 724 2023-07-31T01:14:36Z BEELETH 2 Created page with "{{Stub}}{{Infobox|above=Etude|image=[[File:Etude.png|200px|Etude]]|caption=Design as of 2022}} '''Etude''' (officially known as '''XM-02''') is a robot who was created by [[Bunjeecorp]], but left development due to his personality and visual aesthetics not lining up with the values and characteristics desired by his creators. He, along with [[XM-03]], was almost completely dismantled for spare parts; despite their injuries, they escaped together to have their own lives...." wikitext text/x-wiki {{Stub}}{{Infobox|above=Etude|image=[[File:Etude.png|200px|Etude]]|caption=Design as of 2022}} '''Etude''' (officially known as '''XM-02''') is a robot who was created by [[Bunjeecorp]], but left development due to his personality and visual aesthetics not lining up with the values and characteristics desired by his creators. He, along with [[XM-03]], was almost completely dismantled for spare parts; despite their injuries, they escaped together to have their own lives. His associated Assistant Model is [[AM-02]]. == Personality == Much to his creators' annoyance, he is stubborn and a little snobbish. He has an inferiority complex towards the Special Models who still work for Bunjeecorp. == Appearance == XM-02 is a tall, slender robot covered in glossy black metal. The top of his head has elongated spikes that resemble horns or ears, and they point upwards. He lacks a physical face and has tired-looking eyes projected digitally on a sharp-angled visor; he entirely lacks a mouth or nose, but they can be added if an artist wishes to portray an exaggerated expression with him. His casing is designed with an airplane and bat motif; his shoulderpads reach out far past his actual shoulder joints, and give off the impression of plane wings. His chest casing has a collar-like extension at the top to accentuate his sleek head shape, and around the middle and bottom of the front of his chest there are three glowing panels in a semicircle-like arrangement. His thin arms are covered from the elbow to the majority of the hand with a sleeve-like gauntlet with glowing bottoms and a sharp, wing-like spine emerging from the side of each. His hands have sharp claw-fingers that could have once been be fully retracted to allow for him to form arm cannons on one or both hands, but this functionality (alongside many more) was permanently disabled when Etude was dismantled. Around his waist is a metallic but movable band with a waistcloth-like extension at the front and a draped, frontally semi-exposed skirt with the exaggerated visual characteristics of bat wings partially obscured by it. Underneath his skirt are his long legs, which are covered to about the knee with boot-like casing with a glowing band at an angle around the ankle. == Creation and development == TBA == In-universe history == TBA == Abilities == # TBA == Gallery == TBA == Trivia == * Though he had the option to fully remodel himself like [[Canta]] did, his current design closely resembles his initial design. === Name origin === Etude, along with his companions, has a music-related name due to his interest in the subject. Études are short musical compositions designed for improving or displaying the performer's skill. == Related pages == TBA [[Category:Characters]] [[Category:Bunjeecorp]] [[Category:Robots]] [[Category:Uncharted Space]] 43ad9229e4c0a9bcdaeafaa072f42484f4028ff8 Meow 0 356 725 2023-11-06T16:45:18Z BEELETH 2 Created page with "{{Stub}}{{Infobox|above=Meow}} '''Meow''' is a cat-like, person-sized kaiju who serves as one of [[BEELETH]]'s sonas." wikitext text/x-wiki {{Stub}}{{Infobox|above=Meow}} '''Meow''' is a cat-like, person-sized kaiju who serves as one of [[BEELETH]]'s sonas. 3277d9832b4e42578cca49c1d402476016e738d1 730 725 2023-11-14T02:18:57Z BEELETH 2 wikitext text/x-wiki {{Stub}}{{Infobox|above=Meow|image=[[File:Meowstandingthere.png|200px|Meow]]|header1=Creation and development|caption=Design as of 2023}} '''Meow''' is a kaiju who serves as one of [[BEELETH]]'s sonas. == Personality == Smug and lazy. === Voice === Meow has a monotonous voice. == Appearance == Meow is a heavyset, cat-like kaiju that stands somewhere slightly above five feet tall. His general fur pattern could be considered tuxedo if he lacked his distinctive, diamond-shaped green stripes. The points where his dark fur meet his light fur are jagged, but symmetrical. His upper paws are extremely large, have four digits, and have triangular green paw pads; his lower paws are comparably small, have only three digits, and have round paw pads. His eyes are half-lidded and have red bags beneath them; in most cases, he has a smug expression. Even when his mouth is closed, two of his fangs remain exposed. He has two identical tails, each with green claws at the tip, white fur surrounding them until about a third or a half of the tail, and two green stripes that go across the remaining parts. == Creation and development == Meow was originally created as a Roblox avatar on June 6, 2023. He was first drawn on July 23 of the same year, then received a redesign on the 25th. == In-universe history == While Meow isn't canon to Vast Space, he does have lore pertaining to his origin. Meow was born from toxic sludge dumped in an abandoned junkyard. == Abilities == # Consuming hazardous materials without negative repercussions: TBA # Using his tails as extra limbs: TBA # Changing colors (to an extent): TBA # Glowing in the dark: TBA # Interfering with and/or entering various devices: TBA === Dubiously canon abilities === # TBA == Gallery == TBA == Trivia == * He retains the same colors and general idea as his initial design, but has some major differences. ** His stripes are now in clusters of two rather than three. ** The bangs that covered his eyes have been removed, and his horns have shifted closer to the center of his head. ** The furred portion of his tails now have white ends and green stripes. * He once was portrayed with the ability to hide the unnatural parts of his appearance in order to appear more like a housecat. * His design was inspired by Purugly, Incineroar, and Garfield. === Name origins === Since he resembles a cat, Meow was named after the English onomatopoeia for a cat's typical vocalization within human hearing. == Related pages == * TBA [[Category:Characters]] [[Category:Non-canon]] c7c3e651c628e94783bdc986a049f1951eeb6c32 732 730 2023-11-14T02:22:21Z BEELETH 2 wikitext text/x-wiki {{Stub}}{{Infobox|above=Meow|image=[[File:Meowstandingthere.png|200px|Meow]]|header1=Creation and development|caption=Design as of 2023}} '''Meow''' is a kaiju who serves as one of [[BEELETH]]'s sonas. == Personality == Smug and lazy. === Voice === Meow has a monotonous voice. == Appearance == Meow is a heavyset, cat-like kaiju that stands somewhere slightly above five feet tall. His general fur pattern could be considered tuxedo if he lacked his distinctive, diamond-shaped green stripes. The points where his dark fur meet his light fur are jagged, but symmetrical. His upper paws are extremely large, have four digits, and have triangular green paw pads; his lower paws are comparably small, have only three digits, and have round paw pads. His eyes are half-lidded and have red bags beneath them; in most cases, he has a smug expression. Even when his mouth is closed, two of his fangs remain exposed. He has two identical tails, each with green claws at the tip, white fur surrounding them until about a third or a half of the tail, and two green stripes that go across the remaining parts. == Creation and development == Meow was originally created as a Roblox avatar on June 6, 2023. He was first drawn on July 23 of the same year, then received a redesign on the 25th. == In-universe history == While Meow isn't canon to Vast Space, he does have lore pertaining to his origin. Meow was born from toxic sludge dumped in an abandoned junkyard. == Abilities == # Consuming hazardous materials without negative repercussions: TBA # Using his tails as extra limbs: TBA # Changing colors (to an extent): TBA # Glowing in the dark: TBA # Interfering with and/or entering various devices: TBA === Dubiously canon abilities === # TBA == Gallery == TBA == Trivia == * He retains the same colors and general idea as his initial design, but has some major differences. ** His stripes are now in clusters of two rather than three. ** The bangs that covered his eyes have been removed, and his horns have shifted closer to the center of his head. ** The furred portion of his tails now have white ends and green stripes. * He once was portrayed with the ability to hide the unnatural parts of his appearance in order to appear more like a housecat. * His design was inspired by Purugly, Incineroar, and Garfield. === Name origins === Since he resembles a cat, Meow was named after the English onomatopoeia for a cat's typical vocalization within human hearing. == Related pages == * TBA [[Category:Characters]] [[Category:Non-canon]] [[Category:Sonas]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]] c21a53dfebd398d02a53a5369a951773d7c6adce John Blunts 0 280 726 576 2023-11-06T16:47:06Z BEELETH 2 wikitext text/x-wiki {{Infobox|above=John Blunts|image=[[File:Johnpink.png|200px|placeholder text]]|header1=Creation and development|label2=Development|data2=* September 30, 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts|label6=Other names|data6=* John Blunts * Johnny Blunts * Mr. Blunts|label7=Genders and labels|data7=Unconfirmed gender (masculine), himbo|label8=Pronouns|data8=* he/him * it/its|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Furry]] llama|header11=Plot information|label12=Space|data12=[[Uncharted Space]]}} '''John Blunts''', known formally as '''Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts''', is the famous and wealthy founder and owner of an alternate-universe [[4Kids Entertainment]]. He is also the wielder of the [[Burning Super Death Sword]]. He was once in a relationship with [[Cream]], and has a son named [[Barry Normal]]. == Personality == Blunts is naturally charismatic despite his bumbling, foolish, and otherwise idiotic nature. To most, he is a pleasure to be around, though some may find his unintentional egoism to be grating. He is quite oblivious to a lot of the things that go on around him. == Appearance == John Blunts is a [[furry]] llama with long, shaggy two-toned wool that is longest on his legs and head. He is constantly grinning and has half-lidded eyes; under his smile is a short, beard-like extension of his facial wool. He has a dog-like tail that also tends to wag when he is excited. He has a cartoonishly muscular build with an exaggerated upper body and a thinner lower body. On his feet, he has cloven hooves and a single toe in the back. His hands are also cloven hooves with a single thumb. His fingers and toes are drawn as entirely covered in hoof material rather than partially. He is almost always seen wearing the same outfit consisting of a shirt with rolled-up sleeves, a vest, a tie, a belt, and bandages. It's very rare for him to wear pants or any actual clothing on his lower body. === Other design notes === He can be portrayed in any palette with any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks. * His main two palettes are a "pink lemonade" palette and a more creamy-colored palette. ** The Burning Super Death Sword's palette does not inherently change based on John's palette. * He was originally intended to wear black, high-end sunglasses, but they were dropped from his design. However, he can still be drawn wearing them though they may look awkward in some styles. * The arm hair drawn over his forearm wool is ''strongly'' recommended to be drawn unless it would look out of place in a certain art style. * Though it's okay to draw him with the biologically correct amount of fingers and toes, it is preferred that he only has 3 digits on each foot and hand. == Creation and development == Originally, John Blunts was created as a Roblox avatar. == In-universe history == Not much about his life prior to founding 4Kids Entertainment is known. === Founding of 4Kids Entertainment === TBA == Abilities == # '''Bending the laws of reality:''' As John Blunts has such a cartoony presence, he is able to influence and manipulate nearly anything with minimal effort. He has some control over what he is able to affect, but it is mostly determined by how funny it is in the moment and whether or not it must be censored. #* The definition of "funny" is not entirely known for sure when it comes to his reality-bending power. #** It can be assumed to be low-brow. #* His passive censorship ability mostly just affects swearing, weapons, drugs, alcohol, blood, sexual content, and death. #** Despite its drug references, his name is always immune to censorship. #** Guns will actually disappear if they are brought anywhere near him, or if they are in a position that could harm anyone near him. #** If he or someone in his ability's range is to die, they shall instead be sent to the [[Dark Side]]. #** Swords physically cannot be used to directly cut organic beings in his range. If they are to be used as a weapon at all, they must be used in combat that does not require physical contact. For example, "air slashes" are safe to use. # '''Wielding the Burning Super Death Sword:''' John Blunts is one of the only people who is able to wield the Burning Super Death Sword; this is partially because he is too stupid to be affected by the weapon's mind-controlling manipulation and also because the sword has just given up on trying to use its power on him. # '''Being a "main character":''' Despite not being an overly prominent character in the [[Uncharted Space]]'s lore, many events in his life are in his favor in some way or will lead to some significant changes to his development as a person. == Gallery == ''<small>[[John Blunts/Gallery|Click here to see John Blunts' full gallery.]]</small>'' === Recognized palettes === <gallery> File:Johnpink.png|"Pink lemonade" palette File:Johnwhite.png|"Cream" palette </gallery> === Reference images === TBA == Trivia == * Despite its name, the cream palette is not named after Cream, but rather just the colors used. * The bandages on his legs were a last-minute design choice, and he was originally going to wear pants. === Name origin === John Blunts was given his first name because John feels very generic, meanwhile his last name was chosen because it sounded fun to say right after his first name. As well as that, it's an ironic drug reference given his censorship ability and kid-friendly career. All of his middle names were chosen at random based on what sounded the most stupid. == Related pages == * [[Cream]], John Blunts' dramatic foil [[Category:Characters]] [[Category:Stubs]] [[Category:Furries]] a13179372a7d1836c68657005ee72a2a16f90ffd File:Ambrosia.png 6 357 727 2023-11-13T03:00:12Z BEELETH 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Ambrosia 0 358 728 2023-11-13T04:09:18Z BEELETH 2 shes real wikitext text/x-wiki {{Stub}}{{Infobox|above=Ambrosia|image=[[File:Ambrosia.png|200px|Ambrosia]]}} '''Ambrosia''' (formally known as '''Ambrosia of [[Greenwood]]''') is one of the [[fairy]] representatives within the [[Forest Ring Alliance]]. == Personality == TBA == Appearance == Ambrosia is a light blue cauda with long, pink hair that swoops upwards towards the ends. Her ears droop further down than most fairies' ears do, and she is notable for having curled, golden horns (rather than white nubs that many caudas emerge with). Her eyes and eyelashes are pink to match her hair. She has leaf-like wings that appear darker the further they extend from her back. Like most other fairies, she has three fingers and a thumb on each hand. Her usual outfit consists of a skirt of pink petals, several golden cuffs, and a cotton boll. Her skirt is covered almost entirely in vanilla [[fairy glaze]]; the same glaze was used to decorate the ray flowers upon her staff. While it is mainly decorative, it also aids in casting sleep spells and other similar [[magic]]. The cuffs upon each of her wrists, as well as the band of her skirt, are made of incredibly soft gold. Around her neck is a puff of cotton with two leaves that resemble a bow. In combat as well as formal situations, she wields an enchanted, Astaracae-like plant as that has been turned into a staff. While it is visibly damaged, it is still incredibly sturdy. It's also very efficient; it gathers energy from the sun and the ground it is placed on. Any energy it collects is stored in the swirly, yellow capitulum. == Creation and development == TBA == In-universe history == TBA == Connections == === Alder === TBA == Abilities == # TBA == Gallery == TBA == Trivia == * TBA === Name origins === Ambrosia mostly gets her name from the ambrosia of Greek myths, the food of the gods. == Related pages == * TBA [[Category:Characters]] [[Category:Fairies]] [[Category:Uncharted Space]] f1fbaefa54b446188e98c7fcc7a159e1667af63a File:Meowstandingthere.png 6 359 729 2023-11-13T04:11:08Z BEELETH 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Woolf 0 360 733 2023-11-14T02:24:28Z BEELETH 2 Created page with "{{Infobox|above=Woolf}} placeholder text [[Category:Characters]] [[Category:Uncharted Space]] [[Category:Bunjeecorp]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]]" wikitext text/x-wiki {{Infobox|above=Woolf}} placeholder text [[Category:Characters]] [[Category:Uncharted Space]] [[Category:Bunjeecorp]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]] 4eb06ed95ebc56fb380a4ffead9bc36950931d50 738 733 2023-11-14T02:45:30Z BEELETH 2 wikitext text/x-wiki {{Stub}}{{Infobox|above=Woolf|image=[[File:Woolfposin.png|200px|Woolf]]|caption=Design as of 2021|header1=Creation and development|label2=Development|data2=* December 2021 (created) * uncertain (written)}} '''Woolf''' (officially known as '''XM-01''') is a multi-purpose robot created by [[Bunjeecorp]]; she is also the first of the special model series, numerically succeeded by [[XM-02]] but officially succeeded by [[XM-04]]. Prior to its discontinuation, her associated assistant model was [[AM-01]]. == Personality == TBA === Voice === TBA == Appearance == TBA === Functionality === Compared to newer special models, Woolf has less physical flexibility in exchange for greater sturdiness. == Creation and development == TBA == In-universe history == TBA == Abilities == # TBA == Gallery == TBA == Trivia == * Woolf is the first character to have a complete original theme song. ** However, Mephistopheles had a theme song in progress at some point in the past. === Name origin === Woolf's name is a portmanteau of "wool" and "wolf", as her design takes inspiration from both sheep and wolves. == Related pages == * TBA [[Category:Characters]] [[Category:Uncharted Space]] [[Category:Bunjeecorp]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]] 88d9fc98b629f15777350b9c9b865720bf079e7a 739 738 2023-11-14T03:16:29Z BEELETH 2 wikitext text/x-wiki {{Stub}}{{Infobox|above=Woolf|image=[[File:Woolfposin.png|200px|Woolf]]|caption=Design as of 2021|header1=Creation and development|label2=Development|data2=* December 2021 (created) * uncertain (written)}} '''Woolf''' (officially known as '''XM-01''') is a multi-purpose robot created by [[Bunjeecorp]]; she is also the first of the special model series, numerically succeeded by [[XM-02]] but officially succeeded by [[XM-04]]. Prior to its discontinuation, her associated assistant model was [[AM-01]]. == Personality == TBA === Voice === TBA == Appearance == TBA === Functionality === Compared to newer special models, Woolf has less physical flexibility in exchange for greater sturdiness. == Creation and development == Woolf's original concept was created in December of 2021 as a "response" to a themed scenario from one of [[BEELETH]]'s friends, and was momentarily used as one of BEELETH's sonas. On June 15, 2023, Beeleth started and completed BADSIDE. == In-universe history == TBA == Connections == === Etude === While Woolf didn't get to interact much with Etude during their time in Bunjeecorp, he has strong opinions regarding her. === Canta === TBA === Netty === TBA === Bunjees === TBA == Abilities == # TBA == Gallery == TBA == Trivia == * Woolf is the first character to have a complete original theme song. ** However, Mephistopheles had a theme song in progress at some point in the past. === Name origin === Woolf's name is a portmanteau of "wool" and "wolf", as her design takes inspiration from both sheep and wolves. == Related pages == * TBA [[Category:Characters]] [[Category:Uncharted Space]] [[Category:Bunjeecorp]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]] a9efb88501ebcedfe4f8d2fbe071c39a0df8d23d File:Kingofbeasts.png 6 361 734 2023-11-14T02:40:35Z BEELETH 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Anemoia.png 6 362 735 2023-11-14T02:41:11Z BEELETH 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Giant.png 6 363 736 2023-11-14T02:41:45Z BEELETH 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Woolfposin.png 6 364 737 2023-11-14T02:42:18Z BEELETH 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 King Beeleth 0 153 741 307 2023-11-25T02:09:52Z BEELETH 2 Replaced content with "placeholder page; sorry if you're here from beeleths toyhouse page :/ [[Category:Pride of the Peacock Angel]] [[Category:Characters]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]]" wikitext text/x-wiki placeholder page; sorry if you're here from beeleths toyhouse page :/ [[Category:Pride of the Peacock Angel]] [[Category:Characters]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]] 22d0e802143d67c0d861bedc5d9542bac095b283 Toons 0 365 742 2023-11-28T04:01:43Z BEELETH 2 Redirected page to [[Absurds]] wikitext text/x-wiki #REDIRECT [[Absurds]] d96e3b291688972858f904a62293a56c5d179f10 Absurds 0 366 743 2023-11-28T04:53:56Z BEELETH 2 Created page with "{{Stub}}{{Infobox|above=Absurds}} '''Absurds''' are a "[[species]]" native to the [[Uncharted Space]], though they may potentially appear elsewhere in [[Vast Space]] for whatever reason. Their appearances vary wildly, but absurds are defined by being strange and out of place compared to other species. Their appearance may be noticeably much simpler than what they are meant to "represent", they may have unusual abilities and traits, or perhaps their appearance and abilit..." wikitext text/x-wiki {{Stub}}{{Infobox|above=Absurds}} '''Absurds''' are a "[[species]]" native to the [[Uncharted Space]], though they may potentially appear elsewhere in [[Vast Space]] for whatever reason. Their appearances vary wildly, but absurds are defined by being strange and out of place compared to other species. Their appearance may be noticeably much simpler than what they are meant to "represent", they may have unusual abilities and traits, or perhaps their appearance and abilities are both strange. They aren't exactly a species, but it's difficult to describe what they are. == In-universe history == It's not known for sure when absurds first started to appear, but around the founding of [[Old Pokopoko]], people became more aware of their existence. At that time, they were assumed to be curse-related somehow and people were wary of them; however, this fear seemed to disappear over the years, and absurds were eventually accepted into Pokopokan society. As for other [[locations]], their interactions with absurds were ironically ''mundane'' enough to avoid documentation until recent years. Absurds usually land jobs in entertainment due to their inherent comic abilities. For example, [[John Blunts]] is a popular [[New Pokopokan]] actor who runs [[4Kids Entertainment]] and has his own show. == Classification of absurds == Absurds are classified as a species rather than a condition because there isn't really a way to "contract/cure absurdism". It's also possible to be a half-absurd, which wouldn't really make sense if it were considered a condition. ==== Classification within absurds ==== There are many types of absurds, but it has been determined that there are three major types of absurds (though there is often overlap between these): # '''Absurd in appearance:''' An absurd may have an unusual appearance that varies depending on a viewer's perspective, like face/eye placement. For example, some absurds have ears that appear the same at all angles, or some may have their face fully visible at angles that are impossible on non-absurds. # '''Absurd in ability:''' Absurds are unique for having abilities that rely upon their comedic potential. # '''Absurd in personality:''' Absurds will usually have personalities and behaviors that stand out from non-absurds, like performing illogical things and treating them as if they are normal. Someone may be considered an absurd if they fit within at least one of these categories, but obviously these types can apply to non-absurds. As well as this, a character may appear to be an absurd based on how they are drawn by an artist due to their style. If a character is not obviously an absurd, it's best to rely upon established information about them to know if they are one or not. Within Vast Space canon, characters are usually noted by other characters to be an absurd or to have their properties. == Species merits == The individuals within any species will vary, so this list is not to be taken at face value. Rather, this is a general representation of what absurds are biologically predisposed to, or are otherwise known for. === Strengths === * Absurds can defy logic and even life/death itself. ** One could argue that their abilities rival even those of [[deities]] if used correctly (and if used in the right situations). * [[Kineticism]] appears to be more common in absurds than many other species, and the kinetic potential of absurds also tends to be very high. * Their comedic abilities may help them escape dangerous situations in ways impossible for non-absurds. ** For example, they can easily untie ropes, slip through cracks, or dodge incoming attacks if it has potentially funny results. * Some absurds are fully aware of the world around them, and can address viewers, readers, and sometimes even deities. * Absurds can successfully hybridize with many other species and produce fertile offspring. ** If someone has an absurd ancestor, they may inherit some of their abilities (even if they don't appear absurd themselves). ** Their offspring may not resemble them at all. * They can make unnatural sounds or expressions easily. === Weaknesses === * An absurd's abilities may make it difficult to function in normal daily life. ** Some absurds are censored by mysterious forces and cannot say certain things or use certain objects. ** It may be hard for them to predict their own abilities, and they may misjudge what they are capable of. * They may be weak to some objects or forms of kineticism that don't normally affect other people. * Some absurds cannot be taken seriously, despite their attempts to be serious. === Other species-related notes === * Absurds tend to be animals and people, but may also be objects, plants, or other things entirely. * They aren't always anthropomorphic or capable of speech, but most are. == Trivia == * [[John Blunts]] was the first absurd to be established in Vast Space canon. ** Additionally, [[Barry Normal]] (John Blunts' son) was the first half-absurd to be established. === Etymology === Absurds get their name from their logic-defying abilities, appearances, and behaviors. They were also temporarily referred to as "toons", as they are comparable to cartoon characters. == Related pages == * TBA [[Category:Species]] [[Category:Uncharted Space]] [[Category:Absurds]] fd4e3509b70ecb3b737b035d2dc602d9d26513a9 User:BEELETH 2 163 744 662 2023-11-28T05:17:14Z BEELETH 2 wikitext text/x-wiki howdy howdyhowdy{{Infobox|above=Halberd Aswang|image=[[File:Halbrown.png|200px|alt=Halberd with brown hair]]|caption=The REAL ONE!!!!|header1=Descriptors|label2=Other names|data2=* Al * Hal * Halb * Halby|label3=Genders and labels|data3=Epicene, intersex, bear|label4=Pronouns|data4=* they/them * he/him * it/its * that one/that one's|label5=Orientation|data5=Autosexual, aromantic, polyamorous|label6=Species|data6=[[Human]], but evil}} == who that little dude on the screen == thats me!!!!!!!!! halberd!!!!!!!!!!!!!!!! idiot == about me == basement-dwelling neckbeard in spirit. most evil little man in the world === likes === * yoeko (pls join r/YoekoKurahashi) * dj technorch * pokemon * klonoa * rhythm games === dislikes === * olives * cleaning * working on the fucken WIKI!!! GOD DAMN!!!!!!!!!! === other things about me === im good at smash and i like playing as incineroar and pink villager. pretty good at muse dash too == about my works == i make things that i like and other people also tend to like my stuff and i think thats pretty cool === achievemnet and porfolo === halberd haves many achievemnts in his life.......... * former character artist and designer for maxein (as of this edit the project has been retired) * made some emojis and stickers for the be an alien: renewal discord server * emoji artist for the shark army discord server * open source objects contributor + character cameo in short 1 (das [[wormshroom]] babey!!!!) ==== trivial achieves ==== * met rockhopper in og club penguin * neopets + roblox player of over 10 yrs * one of the .gg/garfield 10k event jackbox winners * people like my art and i have been featured a few times in various things ** featured in the nintendo switch news feed for ultimate chicken horse twice ** my art is in the lost media wiki fanart section ** my art was featured momentarily in the 24/7 kikuo radio stream before that died too * people like using my stuff and i think thats fun ** original creator of some of those clonable mlp skins on manyland *** shoutout to coffeebug for using my stuff beyond ml we love to see it ** made some other popular-ish stuff on manyland b4 it died (tilesets, bunjees, anvil, etc) * i can beat my mom at tetris thats cool i think == trivia == * #00FF00 === name origin === halberd is wepon. aswang is aswang. you a jokester? == contact == see beeleth.carrd.co or beeleth.neocities.org f71855dda2cb1dd45eb7f37afc5ba3e679afc8bd